2010-05-11 2 views
19

Ich habe eine Abmelde Aktion auf einem Controller wie so:ASP.NET MVC abzumelden wirklich mit Formularauthentifizierung

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(); 
    } 

jedoch x, y, a und b, sind alle wahr. Wenn meine Ansicht gerendert wird, verhält sie sich immer noch so, als wäre der Benutzer eingeloggt. Kann jemand bitte eine Lösung und/oder Erklärung liefern?

Antwort

42

FormsAuthentication.SignOut() entfernt die Authentifizierungscookie, so müssen Sie, nachdem sie umgeleitet werden, anstatt eine Ansicht zurückzukehren, so dass der Kunde benachrichtigt wird:

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

Jetzt im Index Aktion wird der Benutzer nicht mehr authentifiziert werden.

+3

Darin ist richtig. Was ich manchmal mache, ist eine "return Redirect (FormsAuthentication.LoginUrl)"; Dadurch wird der Benutzer zurück auf die Anmeldeseite geleitet, die Sie im Authentifizierungsbereich in Ihrer web.config deklarieren. Dasselbe wirklich ... –