SessionID in ASP.NET neu generieren

8

Bitte schlagen Sie vor, wie Sie eine neue Sitzungs-ID in ASP.NET neu generieren. Wenn wir SessionManager verwenden, um eine neue ID zu generieren, wird der Wert von Session.SessionID nicht geändert. Bitte schlagen Sie vor, wie dies erreicht werden kann. Im Grunde möchte ich eine neue Session.SessionID haben, nachdem ich Sitzung verlassen oder NewID mit SessionManager erzeugt habe.

Danke

    
user686021 31.03.2011, 15:36
quelle

4 Antworten

5

Sehen Sie sich die Methode SessionIDManager.SaveSessionID an. Es speichert eine neu erstellte Sitzungskennung für die HTTP-Antwort.:

%Vor%     
Alex 31.03.2011 15:48
quelle
3

Wir haben die Lösung von Alex verwendet, aber anfangs hat es nicht funktioniert, die ursprüngliche sessionID wurde zurückgegeben und die neu generierte sessionID wurde ignoriert. Wir haben eine Reihe von Ansätzen ausprobiert und am Ende ging es darum, sicherzustellen, dass der Sitzungs-ID-Regenerationsschritt außerhalb eines beliebigen Login-Schritts stattfindet und dass zwischen den Schritten eine Umleitung stattfindet. Zuerst zerstören wir den Session-Cookie, dann erstellen wir eine neue Session-ID und schließlich leiten wir auf die Login-Seite um. Die Umleitung vor jedem Login ist der kritische Schritt:

%Vor%     
Omri 12.01.2012 16:45
quelle
1

Der Trick besteht darin, vor der Weiterleitung einen Wert in this.Session festzulegen, andernfalls wird die "leere und daher unbrauchbare Sitzung" wiederverwendet.

Der folgende Beispielcode ist die verkürzte Version einiger Hilfsfunktionen, die ich verwende, um einige sitzungsbezogene Informationen domänenübergreifend zu teilen. Zuerst wird ein Server-zu-Server-Aufruf durchgeführt, um die Sitzungs-ID einzurichten; Zweitens wird der Browser des Benutzers zu einer Seite umgeleitet, die die Sitzungs-ID einstellt und auf die Titelseite (oder etwas relevanteres) umleitet.

%Vor%

Das obige wurde getestet, indem die Session-ID spät im normalen Seitenzyklus in Page_Load gesetzt wurde. Könnte anders funktionieren, wenn es in HttpHandler oder ähnlichem implementiert wird. Außerdem wurde dies in einer älteren ASP.NET 2.0-Anwendung implementiert und lokal auf IIS Express getestet - Ihre Laufleistung kann variieren.

    
Joel Purra 07.08.2012 22:49
quelle
1
%Vor%     
Nguyen Quy 20.04.2017 02:13
quelle

Tags und Links