2015-02-21 11 views
34

Ich benutze eine grundlegende Anmeldung auf einer ASP.Net MVC 5 Testseite (für eine Internetseite).ASP.Net MVC 5 w/identity 2.2.0 Abmelden funktioniert nicht

Der Login funktioniert gut, aber wenn ich versuche mich abzumelden, passiert es nicht. Der Logout-Link funktioniert ruft die folgende Controller-Aktion:

public ActionResult LogOff() 
{ 
    AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "Home"); 
} 

Aber der Benutzer angemeldet bleibt Wie stelle ich sicher, dass der Benutzer aus wird tatsächlich angemeldet.?

+0

Kann verwandt werden mit dieser http://stackoverflow.com/questions/28263095/logout-funktionality-not-working-with-asp-net-identity – janhartmann

Antwort

49

hatte ich dieses Problem vor, Änderung:

AuthenticationManager.SignOut(); 

An:

AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 

Unter der Annahme, dass Sie ApplicationCookie speichern Sie Ihre Login-Daten verwenden.

+2

Danke - arbeitete für mich. Kleiner Hinweis: Es sollte "AuthenticationManager" (für den automatisch generierten Code) und nicht "Authentication" sein. –

+0

Eigentlich loggt es sich nicht von der Serverseite ab. https://stackoverflow.com/questions/24552448/web-api-2-owin-authentication-signout-doesnt-logout –

+0

@JeevaJsb diese Frage ist über Träger Tokens, die vollständig von Cookies abweichen –

-4

Ich hatte das gleiche Problem nicht abmelden zu können. Ich würde eingeloggt bleiben und nur zurück zur Home-Ansicht umleiten. Ich habe Chrome benutzt und ich habe es in Firefox und ie versucht und hatte das Problem nicht. Dann habe ich meine Kekse in Chrom gereinigt und alles hat gut funktioniert. Es könnte ein schneller und einfacher erster Schritt sein, wenn andere dieses Problem haben.

+2

Wir stießen auf das gleiche Problem mit unsere Anwendung nach dem Upgrade von AspNet.Identity 2.0.1 auf 2.2.0. Das Löschen von Cookies signierte den Benutzer zwar, aber es war keine sehr praktische Lösung. Wir haben das Update in die akzeptierte Antwort implementiert und es hat das Problem für uns gelöst. – Avalanchis

2

bessere Art und Weise:

public ActionResult Logout() 
{ 
    SignInManager.AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "support", new { area = "" }); 
} 

oder Sie SignInManager in Ihrem Controller wie diese injiziert verwenden:

public ActionResult Logout() 
{ 
    _signInManager.AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "support", new { area = "" }); 
} 

gibt es keine Rücksicht.