1. Autenticación de formularios (más simple, recomendado si es posible):
Si tiene * alguna * flexibilidad en su configuración, la solución más fácil y limpia es cambiar a formar autenticación . La autenticación de Windows es inflexible y es estrechamente acoplada a la administración de usuarios del servidor. La autenticación de formularios le permite administrar cuentas de usuario dentro de su aplicación y proporciona un mecanismo de cierre de sesión sencillo. Luego, un simple `FormSauthentication.signout ()` en su acción del controlador manejará el cierre de sesión.
`` `csharp
[Httppost]
Public ActionResult Logoff ()
{
FormSauthentication.signout ();
return redirectToAction ("índice", "inicio"); // redirigir a su página de inicio
}
`` `` ``
2. Forzar una nueva solicitud (autenticación de Windows):
Si * debe * usar la autenticación de Windows, debe activar una nueva solicitud que forzará una reautenticación (o falta de ella). No hay comando directo de "cierre de sesión"; Básicamente estás destruyendo la cookie de la sesión:
* redirigir a una URL especial: Cree una acción del controlador que no requiere autenticación. Esta acción no hace nada excepto redirigir. La parte importante es que esta redirección borrará la cookie de autenticación existente. El navegador enviará una nueva solicitud, y IIS reconocerá que no hay una sesión válida.
`` `csharp
[DESONTANONYMOUS] // ¡Esto es crucial! Permite el acceso sin autenticación
Public ActionResult Logoff ()
{
return redirect ("/"); // o a cualquier URL que no requiera autenticación
}
`` `` ``
* Clear Cookies (JavaScript del lado del cliente - menos confiable): Este enfoque generalmente es menos preferido porque se basa en acciones del lado del cliente y podría no siempre funcionar de manera confiable entre los navegadores:
`` `JavaScript
document.cookie ="asp.net_sessionID =; expires =thu, 01 de enero de 1970 00:00:00 utc; path =/;";
// Potencialmente necesita líneas adicionales para eliminar otras cookies de autenticación específicas para su configuración.
window.location.href ="/logoff"; // redirigir a su acción de registro
`` `` ``
Consideraciones importantes con la autenticación de Windows:
* Configuración de IIS: Asegúrese de que la configuración IIS de su aplicación esté configurada correctamente para la autenticación de Windows.
* Gestión de la sesión: La autenticación de Windows a menudo se basa en la administración de la sesión del servidor (estado de sesión IIS). El método de redirección anterior finaliza efectivamente la sesión forzando una nueva solicitud sin una cookie de autenticación.
* Múltiples cookies: Dependiendo de su configuración, puede haber varias cookies relacionadas con la autenticación. Es posible que deba borrar aquellos explícitamente (aunque el método de redirección generalmente es suficiente).
* Kerberos: Si Kerberos está involucrado (común en entornos empresariales), el proceso de cierre de sesión podría ser más complejo, ya que los boletos de Kerberos tienen su propio ciclo de vida y gestión.
Recomendación:
Considere seriamente cambiar a la autenticación de formularios si tiene algún control sobre su proyecto. Es mucho más simple administrar las sesiones de usuario y el cierre de sesión. Manejar el inicio de sesión de la autenticación de Windows es inherentemente más complejo y menos confiable. Los enfoques anteriores funcionan, pero confían en métodos indirectos para finalizar la sesión de Windows. Siempre pruebe completamente en diferentes navegadores.