ASP ASPXAUTH Authentifizierungs-cookie nicht gelöscht, Sie auf anmelden/Abmelden
Ich bin mit ASP-Authentifizierung und die integrierten webservice.
Den Benutzernamen mit Forms-Authentifizierung über eine login-Seite.
Melden Sie sich, ich rufen Sie die Authentifizierungs-webservice von Silverlight und rufen logout.
Alles funktionierte OK, aber jetzt mal IE wird verrückt und nicht sich der Benutzer nicht mehr.
Ich verwendet Fiddler und es stellt sich heraus, dass der authentication service gibt einen SetCookie klar, das ASPXAUTH cookie, aber auf dem nächsten Aufruf von IE immer noch ist der cookie gesetzt werden.
So natürlich, weil das cookie vorhanden wird der Benutzer authentifiziert und protokolliert sofort wieder, anstatt direkt auf die einloggen-Seite.
Habe ich überprüft und sehe keine andere Beschreibung des Problems.
Ich kann es nicht reproduzieren und meine Kollegen, die haben eine fehlerhafte IE haben es gut funktioniert auf einer Umgebung und nicht auf den anderen (man hat das Problem für DEV und andere hat das Problem mit dem PreProd-server).
Idee, an was kann Los sein?
- Ein häufiges problem ist, dass der cookie wird gesetzt in einen Kontext und versucht zu löschen von anderen. E. g. sicherstellen, dass der Pfad und domain-Attribute, die auf die Löschung Set-Cookie-header genau mit denen übereinstimmen, die auf dem ursprünglichen Set-Cookie nennen.
- Leider, wie ich schon sagte, ich habe keine Kontrolle über diese. Ich nenne FormsAuthentication.RedirectFromLogin, um das cookie aus und rufen Sie den webservice-LogOut-Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses Problem, und stellen Sie sicher, der Benutzer wird abgemeldet, jetzt verwende ich das folgende Stück code:
Um dieses Problem zu vermeiden, der moment, Sie machen die SignOut, dann der nächste Anruf muss mit Redirect(pageLogOut, wahr); und beenden Sie alle anderen Aktivitäten, bis seine vollständig umleiten. Der parameter true ist sehr wichtig.
Nach dem Aufruf der SignOut(), müssen Sie zwingen, den browser zu leeren, die cookies-Daten, weil wenn authenticate-request wieder das cookie dann aus irgendeinem Grund das cookie bekommen mehr Zeit, um zu Leben und nicht löschen Sie es aus dem browser, wie Sie Fragen, für die sich SigntOut Befehl.
So, nachdem die SignOut, stellen Sie eine Umleitung zu einer Seite oder stellen Sie sicher, dass Sie Spülen Sie die cookies, um den browser und nicht wieder Fragen nichts, die haben zu tun mit der Authentifizierung der Benutzer, bis die cookies sind Total schreiben Sie an den browser.
Hoffe, dass dies helfen.
Es ist wahrscheinlich, dass das Problem Sie waren Erlebnis war in Bezug auf die cookie-domain. Das cookie vielleicht geschrieben
"." + FormsAuthentication.CookieDomain
. Ich habe cookies auf "admin.example.com" Domäne vor, und haben gesehen das cookie vorangestellt mit.
. In der dev-Umgebung, es ist geschriebenlocalhost
Die Lösung, die ich verwenden, ist das hinzufügen von zwei cookies für jede Authentifizierungs-cookie und session-Cookies.
Also die Lösung, die ich verwende ist wie folgt:
Das Ergebnis dieses Aufrufs wird, fügen Sie die folgenden Header in der Antwort
Wo
***
ist der name von meinem cookie, meine verschlüsselten Authentifizierungs-ticket Wert;Beachten Sie, dass die erste
Set-Cookie
ist wahrscheinlich generiert sich aus derFormsAuthentication.SignOut()
Methode aufrufen.