request.getSession (false) gibt nach dem Aufruf von session.invalidate () keine Null zurück

8

Sollte eine Sitzung nicht ungültig werden, weil request.getSession(false) null zurückgibt? In meinem Logout-Servlet rufe ich

an %Vor%

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.

    
Usman Mutawakil 28.01.2013, 07:33
quelle

2 Antworten

10
  

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:

%Vor%

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:

%Vor%

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%     
BalusC 28.01.2013, 12:35
quelle
2

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%     
quelle