Hallo,
ich habe überlegt, wie ich ein sauberes Logout in meiner Applikation realisiere.
Ich arbeite mit Tomcat und habe ein paar JSP, eine Bean, die im sessionScope läuft, dazu und aktuell ein Servlet.
wenn ein User auf Logout klickt übergebe ich im request dem Servlet ein Parameter "status", der den Wert "logout" hat. Dies frage ich im Servlet ab und entnehme der session mit removeAttribute() die Bean.
Der User bekommt eine Seite gezeigt, in der er über den erfolgreichen Logout informiert wird und einen Link präsentiert, der ihn auf das Servlet weiterleitet. Der User klickt drauf.
Das Servlet holt sich mit getAttribute() die Bean aus der Session. Ist sie nun NULL (habe sie ja entfernt) bekommt der User die login Seite zu sehen.
Ist das so der richtige weg, wie man ein sauberes Logout macht? Wobei die Session genau genommen an sich ja noch existiert, aber die Bean nur neu instanziiert wird.
Ich habe es mit request.isRequestedSessionIdValid() und session.invalidate() versucht. aber wenn ich invalidate() ausführe, ist beim nächsten ServletAufruf request.isRequestedSessionIdValid() true. Also kann ich das nicht benutzen. Das wäre natürlich eine schönere Lösung gewesen.
Also schöner wäre es, wenn ich die Session sauber als abgeschlossen markieren könnte und beim nächsten Aufruf im selben Browserfenster eine neue Session aufgemacht wird.
Was meint ihr dazu?
ich habe überlegt, wie ich ein sauberes Logout in meiner Applikation realisiere.
Ich arbeite mit Tomcat und habe ein paar JSP, eine Bean, die im sessionScope läuft, dazu und aktuell ein Servlet.
wenn ein User auf Logout klickt übergebe ich im request dem Servlet ein Parameter "status", der den Wert "logout" hat. Dies frage ich im Servlet ab und entnehme der session mit removeAttribute() die Bean.
Der User bekommt eine Seite gezeigt, in der er über den erfolgreichen Logout informiert wird und einen Link präsentiert, der ihn auf das Servlet weiterleitet. Der User klickt drauf.
Das Servlet holt sich mit getAttribute() die Bean aus der Session. Ist sie nun NULL (habe sie ja entfernt) bekommt der User die login Seite zu sehen.
Ist das so der richtige weg, wie man ein sauberes Logout macht? Wobei die Session genau genommen an sich ja noch existiert, aber die Bean nur neu instanziiert wird.
Ich habe es mit request.isRequestedSessionIdValid() und session.invalidate() versucht. aber wenn ich invalidate() ausführe, ist beim nächsten ServletAufruf request.isRequestedSessionIdValid() true. Also kann ich das nicht benutzen. Das wäre natürlich eine schönere Lösung gewesen.
Also schöner wäre es, wenn ich die Session sauber als abgeschlossen markieren könnte und beim nächsten Aufruf im selben Browserfenster eine neue Session aufgemacht wird.
Was meint ihr dazu?