FormsAuthentication.SignOut Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Remove o tíquete de autenticação de formulários do navegador.
public:
static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()
Exemplos
O exemplo de código a seguir limpa o cookie de autenticação de formulários usando o SignOut método e redireciona o usuário para a página de logon usando o RedirectToLoginPage método .
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void LoginLink_OnClick(object sender, EventArgs args)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub LoginLink_OnClick(sender As Object, args As EventArgs)
FormsAuthentication.SignOut()
FormsAuthentication.RedirectToLoginPage()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
Comentários
O SignOut método remove as informações do tíquete de autenticação de formulários do cookie ou da URL se CookiesSupported for false
. Você pode usar o SignOut método em conjunto com o RedirectToLoginPage método para fazer logoff de um usuário e permitir que um usuário diferente faça logon.
Se você executar exclusivamente no modo sem cookie ou se der suporte a usuários autenticados e anônimos, deverá controlar explicitamente o redirecionamento para a página de logon se precisar que a lógica de negócios especial seja executada como resultado da remoção do identificador anônimo.
Quando o SignOut método é chamado, um redirecionamento para a página de logon do aplicativo é feito chamando o Redirect método com o endResponse
parâmetro definido como false
. O redirecionamento não ocorre até que a página atual termine de ser executada, portanto, um código adicional pode ser executado. Se o código não contiver um redirecionamento explícito para outra página, o usuário será redirecionado para a página de logon configurada no arquivo de configuração do aplicativo.
Chamar o SignOut método remove apenas o cookie de autenticação de formulários. O servidor Web não armazena tíquetes de autenticação válidos e expirados para comparação posterior. Isso torna seu site vulnerável a um ataque de reprodução se um usuário mal-intencionado obtiver um cookie de autenticação de formulários válido. Para melhorar a segurança ao usar um cookie de autenticação de formulários, você deve fazer o seguinte:
Use a expiração absoluta para cookies de autenticação de formulários definindo a SlidingExpiration propriedade
false
como . Isso limita a janela na qual um cookie sequestrado pode ser reproduzido.Apenas emita e aceite cookies de autenticação em SSL (Secure Sockets Layer), definindo a RequireSSL propriedade como
true
e executando todo o site em SSL. Definir a RequireSSL propriedade paratrue
garantir que ASP.NET nunca enviará um cookie de autenticação para o navegador por uma conexão não SSL; no entanto, o cliente pode não respeitar a configuração segura no cookie. Isso significa que o cliente pode enviar o cookie de autenticação de formulários por uma conexão não SSL, deixando-o vulnerável a seqüestro. Você pode impedir que um cliente envie o cookie de autenticação de formulários no clear executando todo o site em SSL.Use o armazenamento persistente no servidor para registrar quando um usuário sair do site e, em seguida, use um evento de aplicativo como PostAuthenticateRequest evento para determinar se o usuário atual foi autenticado com autenticação de formulários. Se o usuário foi autenticado com autenticação de formulários e, se as informações no armazenamento persistente indicarem que o usuário está conectado, limpe imediatamente o cookie de autenticação e redirecione o navegador de volta para a página de logon. Após um logon bem-sucedido, atualize o armazenamento para refletir que o usuário está conectado. Quando você usa esse método, seu aplicativo deve acompanhar o status de logon do usuário e deve forçar os usuários ociosos a fazer logoff.