FormsAuthentication.SignOut funktioniert nicht mit benutzerdefiniertem Domänen-Cookie

9

Der Titel sollte alles sagen.

Hier ist der Code zum Setzen des Cookies:

%Vor%

Hier ist mein Code zum Abmelden von meiner Website:

%Vor%
  

Umgebung :

     
  • ASP.NET MVC 3-Webanwendung

  •   
  • IIS Express

  •   
  • Visual Studio 2010

  •   
  • Benutzerdefinierte Domain: "http://localhost.www.mysite.com"
  •   

Wenn ich also versuche und mich abmelde, ist der Cookie immer noch da. Wenn ich die httpCookie.Domain -Zeile (z. B. Standard auf Null) los werde, funktioniert es gut.

Eine andere seltsame Sache, die mir aufgefallen ist, ist, dass Chrome bei der Einrichtung der Domain meinen Cookie nicht im Resources-Teil der Entwickler-Tools anzeigt, aber wenn ich dont die Domain nicht setze, tut es das.

Und zweitens, wenn ich den Cookie mit der benutzerdefinierten Domäne tatsächlich erstelle, ist der Cookie bei der nächsten Anfrage, wenn ich den Cookie von der Anfrage einlese (um ihn zu entschlüsseln), aber die Domain ist null?

>

Ich habe auch versucht, einen weiteren Cookie mit demselben Namen zu erstellen und den Ablauf auf gestern zu setzen. Kein Würfel.

Was ist los? Kann jemand helfen?

    
RPM1984 18.10.2011, 02:59
quelle

2 Antworten

4

Ich glaube, wenn Sie das Attribut domain auf das Element forms in setzen Sie web.config, das gleiche wie das in Ihrem benutzerdefinierten Cookie, sollte es funktionieren. ( BEARBEITEN: Dieser Ansatz funktioniert nicht, da die SignOut-Methode für FormsAuthentication andere Flags auf dem Cookie setzt, die Sie nicht sind, wie HttpOnly ) Die SignOut -Methode legt im Grunde nur das Ablaufdatum des Cookies fest bis 1999, und es benötigt die Domäne, um den richtigen Cookie zu setzen.

Wenn Sie die Domäne nicht fest codieren können, können Sie Ihre eigene Abmeldemethode verwenden:

%Vor%

Ein Authentifizierungscookie ist nur ein einfacher Cookie; Sie entfernen es also genauso wie jedes andere Cookie: verfallen und ungültig machen .

    
vcsjones 18.10.2011, 03:23
quelle
0

Ich hatte ein ähnliches Problem. In meinem Fall habe ich einige userData im AuthCookie gespeichert und die gleichen Effekte wie oben beschrieben erfahren, und bei der Authentifizierung bei jeder Anfrage das Cookie gelesen und die userData in eine statische Variable geschrieben. Es stellte sich in meinem Fall heraus, dass die Daten in der Anwendung erhalten blieben. Um es zu umgehen, musste ich zuerst meine statische Variable löschen und dann den Cookie ablaufen lassen. Ich habe Folgendes in der LogOff-Methode meines AccountControllers verwendet:

%Vor%

Hoffe, das hilft.

AKTUALISIEREN

Auf eine Ahnung nach dem Senden habe ich die mittleren zwei Zeilen durch:

ersetzt %Vor%

... und es hat gut funktioniert, wo es vorher nicht war.

Hinweis:

%Vor%

... berührt den AuthCookie nicht, er setzt nur die statische Klasse zurück, die ich auf die Standardwerte geschrieben habe.

Noch einmal, hoffe das hilft.

    
McOwen 09.12.2011 20:16
quelle