FormsAuthentication.SignOut Método

Definición

Quita el vale de autenticación de formularios del explorador.

public:
 static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()

Ejemplos

En el ejemplo de código siguiente se borra la cookie de autenticación de formularios mediante el SignOut método y se redirige al usuario a la página de inicio de sesión mediante el 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>

Comentarios

El SignOut método quita la información del vale de autenticación de formularios de la cookie o la dirección URL si CookiesSupported es false. Puede usar el SignOut método junto con el RedirectToLoginPage método para cerrar la sesión de un usuario y permitir que otro usuario inicie sesión.

Si se ejecuta exclusivamente en modo sin cookies, o si admite usuarios autenticados y anónimos, debe controlar explícitamente la redirección a la página de inicio de sesión si necesita una lógica de negocios especial para ejecutarse como resultado de quitar el identificador anónimo.

Cuando se llama al SignOut método , se realiza una redirección a la página de inicio de sesión de la aplicación llamando al Redirect método con el endResponse parámetro establecido en false. El redireccionamiento no tiene lugar hasta que la página actual haya terminado de ejecutarse, por lo que se puede ejecutar código adicional. Si el código no contiene una redirección explícita a otra página, el usuario se redirige a la página de inicio de sesión configurada en el archivo de configuración de la aplicación.

Al llamar al SignOut método solo se quita la cookie de autenticación de formularios. El servidor web no almacena vales de autenticación válidos y expirados para la comparación posterior. Esto hace que el sitio sea vulnerable a un ataque de reproducción si un usuario malintencionado obtiene una cookie de autenticación de formularios válida. Para mejorar la seguridad al usar una cookie de autenticación de formularios, debe hacer lo siguiente:

  • Use la expiración absoluta para las cookies de autenticación de formularios estableciendo la SlidingExpiration propiedad en false. Esto limita la ventana en la que se puede reproducir una cookie secuestrada.

  • Solo emita y acepte cookies de autenticación a través de Capa de sockets seguros (SSL), estableciendo la RequireSSL propiedad true en y ejecutando todo el sitio web en SSL. Establecer la RequireSSL propiedad en true garantiza que ASP.NET nunca enviará una cookie de autenticación al explorador a través de una conexión no SSL; sin embargo, es posible que el cliente no respete la configuración segura en la cookie. Esto significa que el cliente podría enviar la cookie de autenticación de formularios a través de una conexión que no es SSL, lo que le deja vulnerable al secuestro. Puede impedir que un cliente envíe la cookie de autenticación de formularios sin cifrar ejecutando todo el sitio web en SSL.

  • Use el almacenamiento persistente en el servidor para registrar cuándo un usuario cierra sesión en el sitio web y, a continuación, usa un evento de aplicación como PostAuthenticateRequest evento para determinar si el usuario actual se ha autenticado con la autenticación de formularios. Si el usuario se ha autenticado con la autenticación de formularios y si la información del almacenamiento persistente indica que el usuario ha cerrado la sesión, borre inmediatamente la cookie de autenticación y redirija el explorador de nuevo a la página de inicio de sesión. Después de un inicio de sesión correcto, actualice el almacenamiento para reflejar que el usuario ha iniciado sesión. Al usar este método, la aplicación debe realizar un seguimiento del estado de inicio de sesión del usuario y forzar a los usuarios inactivos a cerrar sesión.

Se aplica a

Consulte también