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
Sehen Sie sich die Methode SessionIDManager.SaveSessionID
an. Es speichert eine neu erstellte Sitzungskennung für die HTTP-Antwort.:
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% 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.