正确注销 Apache Wicket 应用程序

问题描述 投票:0回答:1

我们正在寻找正确的 Wicket API 来调用,以便正确退出应用程序。多年来/在 Wicket 升级过程中,我们调用了许多不同的

org.apache.wicket.Session
API,但从未完全确定要调用哪一个。我们正在寻求指导以确保我们正确地执行此操作。

目前,我们同时调用

invalidateNow()
invalidate()
,这在这一点上似乎没有必要,并且正在寻找应该优先选择其中一个的方向,以及是否应该调用其他内容。

我们考虑的另一个考虑因素是,调用这些方法不会导致我们的

JSESSIONID
被我们的应用程序服务器(WebSphere)重新生成,我们希望这会防止会话固定。我们看到有 Wicket API 可以强制执行此操作 (
changeSessionId()
),但不确定这是否有必要/是否应该自然发生。

总结一下:

  1. 我们应该调用哪个 Wicket API 来注销用户?
  2. 我们是否应该在登录时调用
    changeSessionId()
    以防止会话固定?
  3. 还有其他我们应该考虑的因素吗?

相关堆栈:

Wicket 8
/
IBM WebSphere Application Server 9

wicket websphere-9 wicket-8
1个回答
0
投票

invalidateNow()
将立即使会话失效。

invalidate()
将在当前请求周期结束时(即在将响应发送给客户端之前)使其无效。

在这两种情况下,Web 服务器的 HttpSession 也将失效。 Web 服务器有责任通过发送具有负值的 cookie 来使 JSESSIONID 无效。如果您有疑问,我建议您注册自己的 https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSessionListener.html 并在创建会话时记录/打印/被毁了。

© www.soinside.com 2019 - 2024. All rights reserved.