FormsAuthentication.SignOut Método

Definição

Remove o ticket 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 seguinte limpa o cookie de autenticação de formulários usando o SignOut método e redireciona o utilizador para a página de login 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>

Observações

O SignOut método remove a informação do bilhete de autenticação de formulários do cookie ou do URL se CookiesSupported for false. Pode usar o SignOut método em conjunto com o RedirectToLoginPage método para fazer logout de um utilizador e permitir que outro utilizador faça login.

Se correr exclusivamente em modo sem cookies, ou se suportar tanto utilizadores autenticados como anónimos, deve controlar explicitamente o redirecionamento para a página de login se precisar de uma lógica de negócio especial para ser executada como resultado da remoção do identificador anónimo.

Quando o SignOut método é chamado, é feito um redirecionamento para a página de login da aplicação, chamando o Redirect método com o endResponse parâmetro definido como false. O redirecionamento só ocorre quando a página atual termina de ser executada, permitindo que seja executado código adicional. Se o código não contiver um redirecionamento explícito para outra página, o utilizador é redirecionado para a página de login configurada no ficheiro de configuração da aplicação.

Chamar o SignOut método apenas remove o cookie de autenticação dos formulários. O servidor Web não armazena tickets de autenticação válidos e expirados para comparação posterior. Isto torna o seu site vulnerável a um ataque de repetição se um utilizador malicioso obtiver um cookie válido de autenticação de formulários. Para melhorar a segurança ao usar um cookie de autenticação de formulários, deve fazer o seguinte:

  • Use a expiração absoluta para cookies de autenticação de formulários, definindo a SlidingExpiration propriedade como false. Isto limita a janela em que um cookie sequestrado pode ser reproduzido.

  • Apenas emitir e aceitar cookies de autenticação através da Camada Secure Sockets (SSL), definindo a RequireSSL propriedade para true e executando todo o site Web sob SSL. Definir a propriedade RequireSSL para true garante que ASP.NET nunca enviará um cookie de autenticação ao navegador através de uma ligação não SSL; no entanto, o cliente pode não respeitar a definição de segurança do cookie. Isto significa que o cliente pode enviar o cookie de autenticação dos formulários através de uma ligação não SSL, deixando-o vulnerável a sequestro. Pode impedir que um cliente envie o cookie de autenticação dos formulários de forma transparente ao executar todo o site em SSL.

  • Use armazenamento persistente no servidor para registar quando um utilizador faz logout do site e depois use um evento de aplicação, como evento PostAuthenticateRequest , para determinar se o utilizador atual foi autenticado com autenticação de formulários. Se o utilizador foi autenticado com autenticação de formulários, e se a informação no armazenamento persistente indicar que o utilizador está desconectado, limpe imediatamente o cookie de autenticação e redirecione o navegador de volta para a página de login. Após um login bem-sucedido, atualize o armazenamento para refletir que o utilizador está logado. Quando utiliza este método, a sua aplicação deve acompanhar o estado de logado do utilizador e obrigar os utilizadores inativos a sair da sessão.

Aplica-se a

Ver também