Ich habe Code, den ich in Bezug auf Sitzungszeitüberschreitungen auf der Website durchschaue. In der web.config bin ich auf diesen Code gestoßen.
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
Weiß jemand, ob einer Vorrang vor dem anderen hat und wie sie sich unterscheiden? Vielen Dank.
asp.net
session
web-config
Glücklicher Luke2
quelle
quelle
Antworten:
Sie sind verschiedene Dinge. Der Wert für das Formularauthentifizierungszeitlimit legt fest, wie lange das Authentifizierungscookie in Minuten gültig sein soll. Dies bedeutet, dass
value
das Cookie nach der Anzahl der Minuten abläuft und der Benutzer nicht mehr authentifiziert wird. Er wird zum Login umgeleitet Seite automatisch. DerslidingExpiration=true
Wert besagt im Wesentlichen, dass der Benutzer, solange er innerhalb des Zeitlimitwerts eine Anfrage stellt, weiterhin authentifiziert wird (weitere Details hier ). Wenn SieslidingExpiration=false
das Authentifizierungscookie festlegen , läuft es nach dervalue
Anzahl der Minuten ab, unabhängig davon, ob der Benutzer innerhalb des Zeitlimitwerts eine Anforderung stellt oder nicht.Der
SessionState
Zeitlimitwert legt fest, wie lange ein Sitzungsstatusanbieter benötigt, um Daten für eine bestimmte Sitzung im Speicher (oder in dem verwendeten Sicherungsspeicher, SQL Server, OutOfProc usw.) zu speichern. Wenn Sie beispielsweise ein Objekt mit dem Wert in Ihrem Beispiel in die Sitzung einfügen, werden diese Daten nach 30 Minuten entfernt. Der Benutzer ist möglicherweise noch authentifiziert, die Daten in der Sitzung sind jedoch möglicherweise nicht mehr vorhanden. DerSession Timeout
Wert wird nach jeder Anfrage immer zurückgesetzt.quelle
Das ist nicht richtig. Das Zeitlimit für Authentifizierungscookies wird nur zurückgesetzt, wenn die Hälfte der Zeit des Zeitlimits abgelaufen ist.
Siehe zum Beispiel https://support.microsoft.com/de-ch/kb/910439/en-us oder https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -Auszeit/
quelle
Soweit ich weiß, sind sie unabhängig voneinander. Indem Sie das Sitzungszeitlimit kleiner oder gleich dem Authentifizierungszeitlimit halten, können Sie sicherstellen, dass benutzerspezifische Sitzungsvariablen nach dem Zeitlimit für die Authentifizierung nicht beibehalten werden (wenn dies Ihr Anliegen ist, was meiner Meinung nach das normale ist, wenn Sie dies fragen Frage). Natürlich müssen Sie die Entsorgung von Sitzungsvariablen beim Abmelden manuell vornehmen.
Hier ist eine anständige Antwort, die Ihre Frage beantworten oder Sie zumindest in die richtige Richtung weisen kann:
quelle
Der Unterschied besteht darin, dass einer (Forms Timeout) mit der Authentifizierung des Benutzers und der andere (Session Timeout) damit zu tun hat, wie lange zwischengespeicherte Daten auf dem Server gespeichert sind. Sie sind also sehr unabhängige Dinge, so dass eines nicht Vorrang vor dem anderen hat.
quelle
Diese Konfiguration schickt mich alle zwei Minuten zur Anmeldeseite, was den früheren Antworten zu widersprechen scheint
quelle
Wenn Sie über diese Frage stolpern, lesen Sie diese Dokumentation von MS - sie enthält wirklich gute Details zur Einstellung des FormsAuthentication-Zeitlimits.
In diesem Dokument wird ausführlich erläutert, welchen Kommentar bmode in der akzeptierten Antwort macht - zum dauerhaften Cookie (Sitzung vs läuft ab)
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- Timeout-Wert
quelle