我们正在寻找正确的 Wicket API 来调用,以便正确退出应用程序。多年来/在 Wicket 升级过程中,我们调用了许多不同的
org.apache.wicket.Session
API,但从未完全确定要调用哪一个。我们正在寻求指导以确保我们正确地执行此操作。
目前,我们同时调用
invalidateNow()
和 invalidate()
,这在这一点上似乎没有必要,并且正在寻找应该优先选择其中一个的方向,以及是否应该调用其他内容。
我们考虑的另一个考虑因素是,调用这些方法不会导致我们的
JSESSIONID
被我们的应用程序服务器(WebSphere)重新生成,我们希望这会防止会话固定。我们看到有 Wicket API 可以强制执行此操作 (changeSessionId()
),但不确定这是否有必要/是否应该自然发生。
总结一下:
changeSessionId()
以防止会话固定?相关堆栈:
Wicket 8
/ IBM WebSphere Application Server 9
invalidateNow()
将立即使会话失效。
invalidate()
将在当前请求周期结束时(即在将响应发送给客户端之前)使其无效。
在这两种情况下,Web 服务器的 HttpSession 也将失效。 Web 服务器有责任通过发送具有负值的 cookie 来使 JSESSIONID 无效。如果您有疑问,我建议您注册自己的 https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSessionListener.html 并在创建会话时记录/打印/被毁了。