2010-05-11 14 views
19

tengo una acción de cierre de sesión en un controlador como tan:ASP.NET MVC verdaderamente cerrar la sesión con la autenticación de formularios

public ActionResult Logoff() 
    { 
     var x = Request.IsAuthenticated; 
     var y = User.Identity.IsAuthenticated; 

     FormsAuthentication.SignOut(); 
     Session.Abandon(); 

     var a = Request.IsAuthenticated; 
     var b = User.Identity.IsAuthenticated; 

     return View(); 
    } 

Sin embargo, x, y, a, y b, son ciertas. Entonces, cuando se visualice mi vista, aún se comporta como si el usuario hubiera iniciado sesión. ¿Puede alguien proporcionar una solución y/o explicación?

Respuesta

42

FormsAuthentication.SignOut() elimina la cookie de autenticación, por lo que necesita para redirigir después de que en lugar de devolver una vista para que se le notifica al cliente:

public ActionResult Logoff() 
{ 
    FormsAuthentication.SignOut(); 
    return RedirectToAction("Index"); 
} 

Ahora en la acción Index ya no será autenticado el usuario.

+3

Darin tiene razón. Lo que hago a veces es devolver un "retorno Redirigir (FormsAuthentication.LoginUrl);" Esto enviará al usuario a la página de inicio de sesión que declara en el área de autenticación en su web.config. Lo mismo realmente ... –

Cuestiones relacionadas