在wicket应用程序中注销使用什么方法?

时间:2016-08-02 02:32:48

标签: java wicket httpsession

Wicket org.apache.wicket.authroles.authentication.AuthenticatedWebSession有两种方法:signOutinvalidate。 javac表示signOut标记使用not logged ininvalidate执行相同操作(例如调用signOut)但

  

从已保留的位置删除登录数据

首先应该调用注销操作signOut。但是,对于security reasons会话必须在用户登录或注销后立即失效。因此,从这一点开始应该调用invalidate

那要注销什么?还需要拨打signOutinvalidate时?

2 个答案:

答案 0 :(得分:2)

如果您只想注销,请使用AuthenticatedWebSession#signOut()。

AuthenticatedWebSession使用内部布尔标记'signedIn'来注意用户是否已登录(true)或者没有登录任何正文或用户已登出。

WebSession #invalidate()负责从Wicket会话注册表中删除会话及其完全失效。 AuthenticatedWebSession#invalidate()的实现也调用AuthenticatedWebSession#signOut(),以便完成常规注销。如果您的注销过程需要其他一些操作,那么这可能会有所帮助,因此您可以覆盖AuthenticatedWebSession#signOut()方法。

换句话说:

  • invalidate()调用signOut(),然后从会话注册表中删除会话。
  • signOut()将会话标记为“未登录”,但不会删除该会话。

答案 1 :(得分:0)

要注销,您应该使用#invalidate()!在我看来,#signOut()不应该是API的一部分。最好它应该是#invalidate()的别名。

如果您想要真正安全,那么您应该在登录后使用#replaceSession()