Wicket org.apache.wicket.authroles.authentication.AuthenticatedWebSession有2种方法:signOutinvalidate。 Javac表示signOut标记使用not logged in,而invalidate做相同的操作(例如,调用signOut),但是

从永久保存的位置删除登录数据

乍一看,应该调用signOut进行注销操作。但是对于security reasons会话,必须在用户登录或注销后立即使无效。因此,从这一点出发,应调用invalidate

那么,需要注销什么呢?另外,何时需要调用signOut和何时invalidate

最佳答案

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

AuthenticatedWebSession使用内部布尔标志“signedIn”来通知用户是否已登录(true)或从未登录过主体或用户已注销。

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

换一种说法:

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