Anfrage.getSession(false) nicht null zurückgeben nach dem Aufruf von session.invalidate()
Sollte nicht ungültig werden zu einer Sitzung verursachen request.getSession(false)
null zurück? In meinem logout-servlet-ich nenne
session.invalidate();
und in meinem login-status-filter nenne ich
request.getSession(false);
Den Aufruf von getSession(false) nie null zurück, sondern alle Attribute im Zusammenhang mit dem session-Objekt zurückgegeben werden, null. Ich derzeit herauszufinden, ob ein Benutzer angemeldet ist, sich durch die Suche nach null-Attribute, aber dies scheint nicht richtig.
- Es könnte etwas anderes läuft in zwischen (nach dem erlöschen und vor getsession), die Erstellung der session. Verwenden Sie plain servlets oder noch etwas anderes (speziell die eine, die erfordert Sitzung, z.B. component based frameworks wie JSF können eingestellt werden, speichern Sie die Staaten auf dem server erfordert Sitzung)?
- Plain servlets keine Rahmen
- Ich werde schauen Sie sich um und sehen, ob ich bin der übeltäter Berufung verlangen.getSession(true) irgendwo.
- Wie sind Sie auf die Navigation von
Logout
Servlet zuLoginStatus
filter, nach der Sitzung ungültig? - Der logout-servlet wird aufgerufen, wenn Sie auf "an - /Abmelden", aber der logout-status-filter Filter jede Anfrage, so dass, wenn ein Benutzer eingeloggt ist und geht auf der homepage sehen Sie die Mitglieder-Seite anstatt der login-Bildschirm. Es funktioniert alles. Ich war gerade wählerisch, tatsächlich das töten einer Sitzung und nicht nur Strippen es Attribute, die angezeigt wird, werden alle session.invalidate() eigentlich tut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist auch die normale Vorgehensweise. Um zu überprüfen, ob ein Benutzer angemeldet ist, sollten Sie sicherlich nicht überprüfen, wenn der servletcontainer erzeugt hat, die Sitzung oder nicht. Diese repräsentieren nicht die angemeldeten Benutzer.
Auf login, nur die user-model-Objekt in der session-scope ohne zu prüfen, ob die container geschaffen hat, die Sitzung für Sie. In anderen Worten, verwenden Sie einfach
getSession()
ohne Boolesches argument, so dass der container wird automatisch erstellen Sie, falls nötig, müssen die Sitzung an dieser Stelle trotzdem:On-access-Filterung, nur prüfen, ob die session-Attribut repräsentiert den angemeldeten Benutzer vorhanden ist, verwenden Sie nur
getSession(false)
hier zur Vermeidung unnötiger Sitzung Schöpfung, die ansonsten zum Beispiel such-Roboter auslösen würde der session-Erzeugung ist völlig unnötig:Auf Abmelden, stellen Sie sicher, dass Sie senden eine Umleitung nach ungültig, weil die aktuelle session noch verfügbar ist, in der Antwort eine vorwärts.
für jede servlet-oder jsp-Sie Reisen, sollten Sie rufen
außer Euch ersten Seite, wo Sie die sessionby
wenn Sie dont call
dann die Sitzung nicht durchgeführt, bis diese Seite
also, bevor Sie anrufen
stellen Sie sicher, Sie sind die Fortsetzung der Sitzung an, dass die Seite durch den Aufruf