Sollte eine Sitzung nicht ungültig werden, weil request.getSession(false)
null zurückgibt? In meinem Logout-Servlet rufe ich
und in meinem Login-Status-Filter rufe ich
%Vor%Der Aufruf von getSession (false) gibt nie null zurück, aber alle Attribute, die dem zurückgegebenen Sitzungsobjekt zugeordnet sind, sind null. Ich entdecke derzeit, ob ein Benutzer ausgeloggt ist, indem er nach Null-Attributen sucht, aber das scheint nicht richtig zu sein.
Ich erkenne derzeit, ob ein Benutzer ausgeloggt ist, indem ich nach Null-Attributen
suche
Das ist auch der normale Ansatz. Um zu überprüfen, ob ein Benutzer angemeldet ist, sollten Sie sicher nicht überprüfen, ob der Servletcontainer die Sitzung erstellt hat oder nicht. Dies stellt den angemeldeten Benutzer überhaupt nicht dar.
Fügen Sie bei der Anmeldung einfach das Benutzermodellobjekt in den Sitzungsbereich ein, ohne zu überprüfen, ob der Container die Sitzung für Sie erstellt hat. Mit anderen Worten, verwenden Sie einfach getSession()
ohne boolesches Argument, damit der Container bei Bedarf autocreate, Sie die Sitzung an diesem Punkt trotzdem brauchen:
Bei der Zugriffsfilterung überprüfen Sie einfach, ob das Sitzungsattribut des angemeldeten Benutzers vorhanden ist. Sie verwenden hier nur getSession(false)
, um unnötige Sitzungsgenerierung zu vermeiden. Andernfalls würden beispielsweise Suchmaschinen die Sitzungserzeugung auslösen, die völlig unnötig ist:
Stellen Sie beim Abmelden sicher, dass Sie eine Umleitung nach dem Ungültigmachen senden, da die aktuelle Sitzung in der Antwort einer Weiterleitung noch verfügbar ist.
%Vor%Für jedes Servlet oder Jsp, das du reist, solltest du
anrufen %Vor%mit Ausnahme der ersten Seite, auf der Sie die Sitzung erstellt haben
%Vor%wenn Sie nicht anrufen
%Vor%Dann wird die Sitzung nicht bis zu dieser Seite übertragen also bevor du anrufst
%Vor%Stellen Sie sicher, dass Sie die Sitzung auf dieser Seite fortsetzen, indem Sie
aufrufen %Vor%Tags und Links java java-ee servlets session-state