Frage

Unsere Anwendung meldet sich nach 30 Minuten ab und wird zur Anmeldeseite weitergeleitet. Ich spezifiziere das Sitzungszeitlimit in web.xml und verwende einen requestProcessor für die Umleitung. Ich möchte dem Benutzer eine Meldung anzeigen, dass Ihre Sitzung abgelaufen ist, sobald die Sitzung abgelaufen ist, wie Kann ich das machen? Automatische Abmeldung?Ich möchte die Fehlermeldung auf der Seite „Die Sitzung ist abgelaufen, bitte melden Sie sich erneut an“ anzeigen.Wie kann ich dann feststellen, dass die Sitzung abgelaufen ist?Werden irgendwelche Methoden automatisch ausgelöst?

War es hilfreich?

Lösung

Erstellen Sie eine Aktivitätsprüfung, die jede Minute prüft, wenn eine Benutzeraktivität stattgefunden hat (MUSECLICK, TECKPRESS) und führt einen Herzschlag auf der Serverseite aus, um die Session am Leben zu halten, wenn der Benutzer aktiv ist und nichts tut, wenn der Benutzer nicht aktiv ist.Wenn es keine Aktivität für 30 Minuten gibt (oder ein unabhängiges Standardsitzungs-Timeout auf der Serverseite eingestellt ist), führen Sie dann eine Weiterleitung aus.

Hier ist ein Kickoff-Beispiel mit wenig Hilfe von jQuery , um Klick- und Keypress-Ereignisse zu binden und Ereignisse und Feuer-Ajax-Anfrage zu binden.

generasacodicetagpre.

Erstellen Sie einen generationspoDicetagcode, der auf dem generationspoDicetagcode hört und grundsätzlich nur das folgende ist:

generasacodicetagpre.

, um die Sitzung am Leben zu halten.

Wenn Sie den angemeldeten Benutzer in der Sitzung speichern, ist es "automagisch", wenn die Sitzung abläuft.So müssen Sie den Benutzer nicht manuell abmelden.

Andere Tipps

Erstellen Sie eine Implementierung einer Listener-Klasse HttpSessionListener und definieren Sie es in web.xml

Dadurch werden Sie benachrichtigt, wenn eine Sitzung zerstört wird.Benutzen Sie die sessionDestroyed() Methode.

Ein vollständiges Beispiel finden Sie hier:

http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/

Entweder kann ein einfaches Servlet sein, Spring-MVC- oder Spring-Security-Auto-Logout ist ohne perfekte Client-Seitenteil nicht möglich.
In Anbetracht des Antrags haben beide Antragsart

  • ajax und
  • Formular Einreichung / Seite neu laden

Auto-Logout benötigt sehr berechnete Logik. Präsentation meiner Autologout-Funktionalität Implementierung mit dem folgenden

Vorteile.


1. Um dies zu erreichen, wird kein zusätzlicher Anruf / Anfrage verwendet. Berücksichtigung der Leistungswirkung, wenn mehr als 10k aktive Benutzer und zusätzliche Anrufe zur Erreichung des automatischen Abmeldens.
2. Eine Zeilenkonfiguration mit Tag.
3. funktioniert einwandfrei, auch wenn der Benutzer mehrere Registerkarte oder mehrere Fenster öffnet.
4. Es intimiert Sie vor 30 Sekunden der Ungültigheit der Sitzung. Wenn Sie also Formular ausfüllen und nicht eingereicht haben, können Sie die Session Live aufbewahren (Session von einem Klick erweitern). Der Benutzer verliert also weniger wahrscheinlich nicht gespeicherte Daten.

uage


1. Fügen Sie das automatische Logout-Skript in die erforderlichen JSP-Seiten ein, wie unten angegeben.

generasacodicetagpre.

2. Erstellen Sie eine JSP-Seite, Autologout-Script.jsp und fügen Sie den unteren Code hinzu. HINWEIS: Es ist keine Bearbeitung / Konfiguration erforderlich

generasacodicetagpre.

3. Konfigurieren von Sitzungsattributen zur Konfiguration der Timeout-Einstellung HINWEIS: Konfigurieren Sie diese nach der Session-Erstellung. Sie können die HTTPSESSIONLISTENEN-SessionCreated-Methode implementieren und die folgende Konfiguration gemäß Ihrer Anforderung einstellen.

generasacodicetagpre.

4. Fügen Sie unter HTML hinzu, um den Timer anzuzeigen.
HINWEIS: Es kann auf der Seite AutoloGout-Script-Vorlage verschoben werden, wenn Sie bei CSS gut sind. Daher können Sie vermeiden, dies in jeder Seite hinzuzufügen.
Fügen Sie Bootstrap ein oder fügen Sie Ihre benutzerdefinierten CSS hinzu.

generasacodicetagpre.

 Geben Sie hier eingeben Beschreibung hier eingeben

Das ist alles um eine einfache Auto-Logout-Implementierung. Sie können das Arbeitsbeispiel aus meinem Github-Repository herunterladen
Autologout mit einfachem Servlet Beispiel
Autologout mithilfe von Federschutz Java Configuration Beispiel Kummer Autologout mit dem Spring-Security-XML-Konfigurationsbeispiel

Logik erklärt


Fall 1: Auf der Seite Laden
Hier ist die Logik einfach, auf der Seitenlast-Set-Timer von Intervall-EQULAS in maxinactiveInterval. Nach dem Timeout umleiten Sie zur Anmeldung.
Fall 2: Halten Sie den Track Ajax Anrufe

Berücksichtigen Sie nun AJAX-Anfragen, können Sie .ajaxstart () oder .ajaxcompete () Rückrufe von jQuery verwenden, so dass, wenn eine AJAX-Anforderung abgefeuert wird, das Intervall zurücksetzen.
Fall 3: Tracking von Multi-Tab / Fenster-Aktivität

Die Kommunikation von Intertab wird durchgeführt, um den Status jeder Registerkarte zu synchronisieren. Gebrauchte LocalStorage bei Änderungsveranstaltung.

Einschränkungen / Verbesserungen erforderlich
1. Wenn die maximal zulässige Sitzung eins ist, ist die Sitzung von einer Sitzung von einem anderen System aus, die AJAX-Anforderung fehlschlägt. Es muss behandelt werden, um die Anmeldeseite umzuleiten.
2. Verwenden Sie AJAXSTART () anstelle von ajaxcomplete (), um die exakte Synchronisierung von idletime-Werten zwischen Server und Browser zu haben.

Anforderungen
1. jquery

Alternativen zur aktuellen Implementierung im Vergleich von


1. REFRESH-Header setzen in der HTTP-Antwort. (funktioniert nicht für AJAX-Anforderungen)

generasacodicetagpre.

  1. Einstellung META Refresh Tag in HTML (funktioniert nicht für AJAX-Anforderungen)
  2. generasacodicetagpre.
    1. Konfigurieren der Aktivitätsprüfung Hält die Sitzung am Leben mit wiederholter AJAX-Anforderung. Tracks Leerlaufzeit und macht die Abmeldeanfrage nach dem Timeout.
      Zweifellos ist es ein gutes mit einfacher Logik. Aber ich möchte nur meine Beobachtungen umkippen.
      • Performance-Auswirkungen Wenn pro Minute 2 Anfragen vorgenommen werden, um die Session-amerikanische und 50.000 aktive Benutzer zu halten. 100k Anfragen pro Minute.
      • INTERTAB-Kommunikation Wenn zwei Registerkarten geöffnet sind, empfängt eine Registerkarte Aktivität, aber andere Registerkarte empfängt keine Aktivität, diese Registerkarte feuert die Logout-Anforderung und die Ungülltonte, obwohl Aktivität in anderen Registerkarten vorhanden ist. (Kann aber behandelt werden)
      • Force-Logout-Annäherungsansatz Es ist ein Client, der über den Server zur Ungültiger Session dominiert wird.

Wenn Sie Servlet-Sitzungen verwenden, können Sie überprüfen, ob die Sitzung, ob die JSP / SERVLET zurückgibt, neu mithilfe der ISNEW () -Methode ist.Wenn ja, ist die Benutzersitzung abgelaufen und Sie können die relevanten Nachrichten anzeigen.

Fügen Sie eine JavaScript-Dienstprogrammfunktion in Ihrem JSP ein und ping den Server alle 31 Minuten. Die oben erwähnte Dienstprogrammfunktion sollte mit SETTIMEOUT () jS intern mit intern verwendet werden.

generasacodicetagpre.

Beachten Sie, dass

Prüferversion ()

ist eine reguläre JS-Funktion, die HTTP-Anforderungen feuern kann.Wenn die Anforderung erfolgreich ist, zeigt die Sitzung ansonsten die Aufforderung zum Benutzer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top