IE8- und ASP.Net-Formularauthentifizierungs-Cookies schlagen fehl, wenn mehrere Browser geöffnet werden

8

Ich habe den folgenden Code auf einer Login-Seite. Ich benutze dies, um das Login-Timeout nach Kunden festzulegen. In IE8 stoße ich auf das Problem, dass wenn ein Benutzer ein anderes Browserfenster öffnet, sich im ersten Fenster abmeldet, wenn er sich erneut anmeldet, werden sie nach einer einzelnen Seite (jedes Mal) zum Login zurückgeworfen. Wenn sie keinen anderen Browser öffnen, ist alles in Ordnung.

Ich habe viele Fragen dazu gefunden, aber die einzige Lösung, die ich gefunden habe, ist die Verwendung der cookieless Methode (URI).

Ich habe ein paar Artikel gesehen, die sagen, dass ich die Domain einstellen soll, aber das geht nicht. Außerdem habe ich versucht, das Authticket sowohl auf persistent als auch nicht-persistent zu setzen. Beides hat keinen Unterschied gemacht. Ich habe gesehen, dass der Authentifizierungs-Cookie nach dem Einloggen nicht mehr neu erstellt wird, wenn ich mich anmelde.

Wenn ich das zweite Browserfenster als "Neue Sitzung" öffne, habe ich keine Probleme. (Dies ist nicht praktisch, da wir nicht jeden Nutzer der App dazu trainieren können, auf diese Weise zusätzliche Fenster zu öffnen.)

Gibt es eine Lösung dafür, die jemand gefunden hat, die nicht den cookieloser URI-Ansatz verwendet?

%Vor%     
Mikejh99 10.02.2010, 22:44
quelle

2 Antworten

3

Dies ist eine "Funktion" von Internet Explorer, um Cookies / Sitzungen in Browserfenstern zu teilen. Daher das neue "Feature" zum Erstellen einer "neuen Sitzung" in IE8. Daher glaube ich nicht, dass es einen idealen Weg gibt, dieses Verhalten leicht zu stoppen.

Anders als natürlich ohne Cookies.

    
BlackMael 20.04.2010 13:03
quelle
2

Ich weiß, dass das eine alte Frage ist, aber ich habe das gleiche Problem bekämpft, und ich glaube, ich habe eine Lösung. Ich habe diese genauen Symptome wiederholt und konnte sie (zumindest bis jetzt) ​​erfolgreich eliminieren.

Wenn Sie nur ein Ablaufdatum auf dem Cookie festlegen, wenn Sie ein persistentes Authentifizierungsticket möchten, wird das Problem für mich beseitigt.

Hier ist meine Methode, wie sie jetzt steht:

%Vor%

Und so nenne ich es:

%Vor%

Mir ist klar, dass ich, wie ich es nenne, den "remember me" -Parameter der CreateAuthenticationCookie-Methode nicht brauche (da ich in diesem Fall immer true übergebe), aber ich habe ihn noch nicht umgestaltet zeigt besser, wie jemand anderes es benutzen möchte.

Ich wollte eine Möglichkeit haben, leicht gleitende Verfallszeiten zu haben, wenn der Benutzer sich nicht an mich erinnern möchte, aber wenn sie "sich erinnern" gewählt haben, wollte ich nicht auf die 30-Minuten-Zeitbegrenzung meiner nicht eingeschränkt werden. " Erinnere dich an mich "Benutzer. Mein Ziel war es, dass wenn jemand einen öffentlichen Computer benutzt, sie das gleitende Ablaufdatum bekommen und keine Erinnerung an mich, aber wenn sie einen PC benutzen, können sie sich an mich erinnern und nicht durch die Timeout-Einstellung in der web.config eingeschränkt werden. Ich weiß nicht, dass das alles auf Ihre Situation zutrifft, aber ich hoffe, dass es jemandem hilft oder dass meine Methode eine konstruktive Kritik auf sich ziehen kann, damit ich bei Bedarf Anpassungen vornehmen kann.

PS. Hier sind meine web.config Einstellungen für die Formularauthentifizierung:

%Vor%     
Quesi 05.02.2011 14:34
quelle