ASP.NET: Erkennen des Authentifizierungstimeouts

8

Ich habe mehrere Artikel gesehen, wie dieser , die erklären, wie man a Benutzersitzung hat ein Zeitlimit überschritten. Aus Gründen der Übersichtlichkeit beziehen sich diese Artikel auf den Zeitüberschreitungswert, der in dieser web.config-Zeile definiert ist:

%Vor%

Nicht zu viel in diese Methode zu gehen, aber dies beinhaltet die Überprüfung, dass Session.IsNewSession wahr ist und dass ein Session-Cookie bereits existiert. Aber ich habe keine Artikel darüber gesehen, wie man das Zeitlimit -Authentifizierung erkennt - dasjenige, das in dieser web.config-Zeile definiert ist:

%Vor%

Mehrere Artikel online, einschließlich diesem SO-Post , haben gesagt, dass Ihr Der Sitzungszeitlimitwert sollte im Allgemeinen doppelt so lang sein wie der Authentifizierungszeitlimitwert. Jetzt, wie oben, ist meine Sitzung 120 und meine Authentifizierung ist 60. Das bedeutet, dass ich nie in eine Situation kommen werde, in der die Sitzung abgelaufen ist, aber der Benutzer immer noch authentifiziert ist; Wenn der Benutzer das Zeitlimit überschritten hat, liegt dies an der Authentifizierung und nicht an der Sitzung.

Ich bin also wie alle anderen daran interessiert, dem Benutzer mitzuteilen, dass seine Sitzung abgelaufen ist (aber in Wirklichkeit ist dies auf das Zeitlimit für die Authentifizierung zurückzuführen). Kennt jemand einen Weg, dies zu erreichen, oder irgendwelche Ressourcen online, die mich auf eine Lösung hinweisen können?

    
Matt Powell 09.12.2010, 19:17
quelle

3 Antworten

1

Dies ist wahrscheinlich nicht der optimale Ansatz, aber hier ist etwas, woran ich gedacht habe.

Geben Sie bei der Anmeldung einen Zeitstempel in der Sitzungsmarkierung ein, wenn sich der Benutzer anmeldet. Vergleichen Sie diesen Zeitstempel bei jeder nachfolgenden Anforderung (möglicherweise in der global.asax BeginRequest?) mit der aktuellen Uhrzeit und gleichen Sie diese mit dem Authentifizierungszeitlimit ab (Scott Hanselman erklärt, wie man es hier liest ).

Das ist mein "Kopfscheitel", dachte ich jedenfalls ...

    
Ender 09.12.2010 20:19
quelle
1

Ich würde die HTTP-Pipeline früh in der Anfrage nutzen und eine entsprechende Antwort senden.
Meine Quelle für die Beantwortung solcher Fragen ist:

Professional ASP.NET 2.0 Sicherheit, Mitgliedschaft und Rollenverwaltung

Ein HTTP-Modul könnte den Trick machen:

Web.config:

%Vor%

...

Das tatsächliche HTTP-Modul:

%Vor%

Viel Glück!

    
Brett 09.12.2010 20:22
quelle
1

Wenn Sie den Benutzer anmelden, können Sie ein Cookie auf dem Computer des Benutzers löschen, das angibt, dass eine Sitzung stattgefunden hat. Wenn der Benutzer die Anmeldeseite erreicht (weil seine Anmeldung abgelaufen ist, muss seine Anmeldung ebenfalls stattfinden), überprüfen Sie, ob der Benutzer diesen Cookie hat und ob er einen der von Ihnen erwarteten Sitzungsschlüssel hat (falls dies schwierig ist), Legen Sie einfach eine Sitzungsvariable fest, wenn Sie sich anmelden. Wenn sie den Cookie aber keinen der Sitzungsschlüssel haben, ist ihre Sitzung abgelaufen.

    
John Christensen 09.12.2010 20:26
quelle

Tags und Links