Warum nach logout klicken auf "zurück" Schaltfläche auf der Seite zeigt die Vorherige Seite Inhalt?
Arbeite ich an einer Struts 2-Projekt. Wenn der Benutzer klickt auf einen logout
- Taste die logout
Aktion löscht die session mit session.clear()
. Aber wenn der Benutzer klickt auf den back
- button in der browser nach dem logout, es zeigt immer noch die vorherigen Inhalte auf der Seite. Ich möchte umleiten Benutzer auf die login-Seite, wenn die back
Schaltfläche geklickt wurde, die im browser nach dem ausloggen.
Ist es etwas anderes, das ich hätte klar in meinem logout Aktion um dieses problem zu lösen?
Jede Hilfe wird sehr geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellt sich heraus, dass Ihr browser caching von Seiten, bevor Sie die zurück-Taste drücken. Der browser-caching-Mechanismus ist so konzipiert zur Minimierung der server-access-Zeit, indem Sie die Seite aus dem lokalen cache, wenn die Seite die gleiche URL. Es erheblich reduziert die Belastung des Servers beim Browsen der server von tausenden von Kunden und scheint zu sein, sehr hilfreich. Aber in einigen Fällen, vor allem in dir der Inhalt aktualisiert werden soll. Die zurück-Taste ist so konzipiert, es speichert jede Seite, die ein Benutzer durchsuchen und abrufen aus dem lokalen cache beim drücken der zurück-Taste. So, die Lösung ist, um dem browser mitzuteilen, um nicht zulassen, Zwischenspeicherung, wenn die Rücksendung einer Antwort mit einem speziellen Header zum Steuern des browser-caching. In der servlet-Umgebung, die Sie möglicherweise verwenden Sie einen filter, um caching ausgeschaltet, aber in Struts2 könntest du eine custom-interceptor. Zum Beispiel
Konnte man nun konfigurieren, dass dieser Abfangjäger zu verwenden, indem jede Aktion
Wenn Ihr Pakete erweitern
default
Paket, die Sie Erben, dem interceptor und dem interceptor-stack, Sie können auch überschreiben Sie diese Konfiguration, indem Sie die action-Konfiguration.Cache
mitNoCache
Es geschieht, weil Ihr browser cached die Seite auf dem client.
Die Lösung ist, um zu verhindern, dass das caching der Seite(N), zwingt den browser zum anfordern einer neuen Seite auch beim drücken der Zurück-Taste, anstatt zu Lesen, die gespeichert eine.
Lesen muss:
Ich weiß wirklich nicht Streben. Aber ein Versuch könnte sein, deaktivieren Sie die Zwischenspeicherung auf Seiten, auf denen müssen Sie angemeldet sein.
Könntest du auch ein cookie gespeichert werden soll oder etwas anderes in Ihrem logout-Funktion und die Haupt-Seite überprüft mit AJAX, ob dieses cookie gesetzt ist. Und wenn es ist, könnten Sie die Seite neu laden mit JS (und natürlich unset cookie dann).