Generieren neue SessionId in ASP.NET
Login ich möchte erzeugen eine neue SessionId. Ich habe festgestellt eine Lösung, die funktioniert, aber es erfordert einige ziemlich hackish Dinge und erfordert die app habe Volles Vertrauen securityPolicy Einstellung.
Gibt es eine andere Möglichkeit, dies zu erreichen?
Der Rahmen ist nicht wirklich das setup mit Haken für diese - das ist, warum die Lösung, die Sie gefunden haben, ist "hackish".
Warum willst du nicht die Session-Id, die erzeugt wurde, wenn die Sitzung initialisiert wurde? (dh. Welches problem versuchst du zu lösen?)
Die Frage, wo eine neue sessionId cookie erstellt wurde, auf logout, die Zeit vergeht, dann wird der nächste Benutzer, der sich anmeldet auf, dass der browser immer verwenden, sessionId, das ist eine Sicherheitslücke, wenn jemand schrieb die sessionId in der Zwischenzeit
Warum willst du nicht die Session-Id, die erzeugt wurde, wenn die Sitzung initialisiert wurde? (dh. Welches problem versuchst du zu lösen?)
Die Frage, wo eine neue sessionId cookie erstellt wurde, auf logout, die Zeit vergeht, dann wird der nächste Benutzer, der sich anmeldet auf, dass der browser immer verwenden, sessionId, das ist eine Sicherheitslücke, wenn jemand schrieb die sessionId in der Zwischenzeit
InformationsquelleAutor Jarrod Everett | 2012-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie das funktioniert:
Durch Entrümpelung, cookie, eine neue session mit neuer session-ID am server erstellt wird.
(Referenz: Microsoft Support)
EDIT: Hier ein Beispiel mit AJAX (mit jQuery) zum Aufruf der server-code, ohne eine Aktualisierung der Seite - ruft es zweimal, einmal zum entfernen der ersten Sitzung, und einmal, um einen neuen zu generieren. Kann es einen besseren Weg, aber dies funktioniert.
Und auf der code-behind (für WebForms - man könnte dies auch mit einem MVC-controller):
Sie können dies tun, mit AJAX zu verhindern, dass die multi-regenerieren, vorausgesetzt, Sie benötigen javascript eingeschaltet sein. Siehe mein edit für eine Probe.
Warnung: dies schützt nicht vor session fixation, was ist wohl der Grund, warum die OP will neue ID generieren.
InformationsquelleAutor Joe Enos
Ich bin derzeit daran, eine Konfiguration-basierte Lösung, anstatt einer code-Basis. Ich würde entweder die Konfiguration der web-server oder load balancer abstreifen request-und response-Header mit cookies, die nur für die login-Seite. Entfernen Sie die "cookie" - Header für Anforderungs-Header und "set-cookie" für die response-Header.
Jeden request (GET oder POST) auf die login-Seite enthält keine cookie-Informationen, so zwingt ASP.NET eine neue Sitzung zu erstellen und (noch wichtiger) eine neue session-id.
Es ist weniger effizient als das erzwingen einer neuen session-Erzeugung auf "login", aber die Technik könnte nützlich sein in Fällen, in denen Sie nicht den code ändern.
InformationsquelleAutor Larry Silverman