G
Guest
Gast
Hallo,
ich habe eine simple Login-Logik in JSF programmiert. Soweit, sogut. Der Login klappt, und ich speichere eine Referenz meiner User-Klasse in der Session.
Beim Knopf auf Logout will ich sichergehen, dass meine Session gelöscht wird, doch hier steht nach dem Aufruf von session.invalidate() immernoch mein User in der Session-Instanz, erst nach einem vollständigen Aktualisieren der Seite ist sie dann gelöscht.
hier mein Code-Auszug:
Wäre euch dankbar für jede Hilfe!
Gruß
Christian
ich habe eine simple Login-Logik in JSF programmiert. Soweit, sogut. Der Login klappt, und ich speichere eine Referenz meiner User-Klasse in der Session.
Beim Knopf auf Logout will ich sichergehen, dass meine Session gelöscht wird, doch hier steht nach dem Aufruf von session.invalidate() immernoch mein User in der Session-Instanz, erst nach einem vollständigen Aktualisieren der Seite ist sie dann gelöscht.
hier mein Code-Auszug:
Code:
void doLogin() {
...
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(KEY_USER, myUser);
}
public void doLogout() {
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
if (session != null) {
session.removeAttribute(KEY_USER);
//session.setAttribute(KEY_USER, null);
session.invalidate();
}
}
PhaseListener code (dieser überprüft, ob die Session existiert und verhindert den Zugriff auf geschützte Seiten, wenn der Benutzer nicht eingeloggt ist)
void afterPhase(PhaseEvent e) {
if (e.getFacesContext().getExternalContext().getSessionMap().containsKey(KEY_USER))
{
return;
}
else
{
// Navigiere zur Startseite
}
}
Wäre euch dankbar für jede Hilfe!
Gruß
Christian