有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

Wicketorg.apache.wicket.authroles.authentication.AuthenticatedWebSession有两种方法:signOutinvalidate。javac说signOut标记使用not logged in,而invalidate做同样的事情(例如调用signOut),但是

remove the logon data from where ever they have been persisted

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

那么注销需要什么呢?当需要调用signOutinvalidate时,也可以使用它


共 (2) 个答案

  1. # 1 楼答案

    要注销,您应该使用#invalidate()!我认为#signOut()不应该是API的一部分。充其量它应该是#invalidate()的别名

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

  2. # 2 楼答案

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

    AuthenticatedWebSession使用一个内部布尔标志“signedIn”来通知用户是否已登录(true),或者是否有任何主体已登录或用户已注销

    WebSession#invalidate()负责从Wicket会话注册表中删除会话并使其完全失效。AuthenticatedWebSession#invalidate()的实现也会调用AuthenticatedWebSession#signOut(),以便完成定期注销。如果注销过程需要其他操作,那么这可能会很有帮助,这样您就可以重写AuthenticatedWebSession#signOut()方法

    换言之:

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