Zum umleiten auf die LogIn-Seite, wenn die Sitzung abgelaufen ist (ASP.NET 3.5 FormsAuthen)
Ich verwende FormsAuthentication und ASP.Net SqlMembership Anbieter. Ich möchte eine Funktionalität liefern, die Umleitung auf die LogIn-Seite, wenn die zugrunde liegende Session ist abgelaufen.
Lege ich den folgenden block des codes in meine BasePage OnInit. Soweit ich getestet habe, ist es immer hält auf die Umleitung auf die LogIn-Seite, obwohl ich geliefert richtige Benutzer-id und Passwort. Die durch Rechte, sollte es mir zum Standard-Seite.
if (Context.Session != null && Session.IsNewSession && this.Request.IsAuthenticated)
{
string cookieHeader = Request.Headers["Cookie"];
if (cookieHeader != null && cookieHeader.IndexOf("ASP.NET_SessionId") >= 0)
{
HttpContext.Current.Session.Abandon();
FormsAuthentication.SignOut();
Response.Redirect(FormsAuthentication.LoginUrl);
}
}
- Ist das nicht diese Funktionalität wurde in die Forms-Authentifizierung überhaupt?
- Ja, ist es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie keine benutzerdefinierten code für diese Funktionalität, unterstützt durch das Framework. Nur die Konfiguration in der web.config:
Mit der Konfiguration von oben, die user werden immer weitergeleitet zum Login.aspx-Seite, wenn Ihre Sitzung abläuft. Es gibt ein Zeitlimit von 60 Minuten, und die gleitende Ablaufzeit bedeutet, dass der timeout verlängert sich jedes mal, wenn der Benutzer eine Anforderung an die web-Anwendung, so dass, wenn er aktiv bleibt, wird die Sitzung nicht ab. Eine Konfiguration wie diese bietet Sie einen weiteren Vorteil gegenüber dem, was Sie versucht zu tun - sobald der Benutzer sich anmeldet, wird er automatisch weitergeleitet auf die Ressource, die er ursprünglich angefordert hat. Und Sie können immer überschreiben und anpassen dieses Verhalten.
Pawel Antwort ist teilweise richtig, aber Sie müssen auch die
Session
Lebensdauer auf einen Wert länger als die forms-Authentifizierungs-cookie Lebensdauer sowie. Der forms-Authentifizierungtimeout
Wert wirkt sich nur auf die Lebenszeit des Authentifizierungs-cookie. In dem Beispiel, das er zur Verfügung gestellt, wird der Authentifizierungs-cookie-Laufzeit beträgt 60 Minuten, ist aber die default-session-Lebensdauer beträgt 20 Minuten. Wenn ein Benutzer beim verlassen der Maschine für mehr als 20 Minuten Ihre session-Daten werden verworfen, anschließende versuche, auf einen Wert, gespeichert in der session führen würde, eine Ausnahme ausgelöst wird (zum BeispielSystem.NullReferenceException
wenn Sie versuchen, um.ToString()
oder aus einem Guss).Können Sie diese weltweit in Ihrer Anwendung durch das konfigurieren der
sessionState
Einstellungen in Ihrem web.config-Datei:Hinzufügen von fünf oder zehn Minuten der session-timeout stellt einen guten Puffer.