2016-08-02 21 views
2

Wicket org.apache.wicket.authroles.authentication.AuthenticatedWebSession hat 2 Methoden: signOut und invalidate. Der javac sagt, dass signOut Marke not logged in verwenden, während invalidate das gleiche tun (zB signOut nennen), aberWelche Methode zum Abmelden in einer Wicket-Anwendung?

die Anmeldedaten aus dem entfernen immer sie

beibehalten wurden

Auf den ersten glace für Abmeldung signOut sollte heißen. Aber für security reasons Sitzung muss unmittelbar nach Benutzeranmeldungen oder Abmeldungen ungültig gemacht werden. Also von diesem Punkt aus sollte invalidate aufgerufen werden.

Also, was für Abmeldung anrufen? Auch wenn es erforderlich ist, signOut und wenn invalidate zu rufen?

Antwort

1

Wenn Sie sich nur abmelden möchten, verwenden Sie AuthenticatedWebSession # signOut().

AuthenticatedWebSession verwendet ein internes boolesches Flag 'signedIn', um zu erkennen, ob ein Benutzer angemeldet (true) oder kein Body angemeldet wurde oder ein Benutzer ausgeloggt wurde.

WebSession # invalidate() ist verantwortlich für das Entfernen der Sitzung aus der Wicket-Sitzungsregistrierung und deren vollständige Ungültigkeitserklärung. Die Implementierung von AuthenticatedWebSession # invalidate() ruft ebenfalls AuthenticatedWebSession # signOut() auf, so dass die regelmäßige Abmeldung erfolgt. Dies kann hilfreich sein, wenn Ihr Abmeldeprozess eine andere Aktion erfordert, sodass Sie die AuthenticatedWebSession # signOut() -Methode überschreiben können.

Mit anderen Worten:

  • invalidate() ruft SignOut() und als entfernt die Sitzung aus der Sitzung Registrierung.
  • signOut() markiert die Sitzung als 'nicht angemeldet', aber sie löscht die Sitzung NICHT.
0

Zum Abmelden sollten Sie #invalidate() verwenden! Meiner Meinung nach sollte #signOut() nicht Teil der API sein. Am besten sollte es ein Alias ​​von #invalidate() sein.

Wenn Sie wirklich sicher sein wollen, sollten Sie nach der Anmeldung #replaceSession() verwenden.

+0

https://issues.apache.org/jira/browse/WICKET-6228 –