身份验证后无法重置JSESSIONID

时间:2018-04-05 16:20:17

标签: java refresh reset jsessionid resin

我尝试在登录后重置JSESSIONID,但我不能。我尝试过以下方法:

...
HttpSession ghostSession = request.getSession(false);
ghostSession.invalidate();
request.getSession(true);

...

// some more manipulations of the ghostSession here. 
...

但是JSESSIONID没有重置。我在这里想念什么吗?这是因为在ghostSession失效后操纵distinct-values会阻止JSESSIONID被重置吗?

我使用Resin 4.X作为我的网络容器BTW。

谢谢。

1 个答案:

答案 0 :(得分:0)

感谢here提供的见解,这是树脂问题。

基本上做

的组合
request.getSession(false).invalidate();
request.getSession(true);

不会触发Resin重置JSESSIONID。

仅Servlet 3.1支持HttpSession.changeSessionId(),而Resin 4.0.X不支持Servlet 3.1。

我最终做的是调整Resin的会话处理。即在<reuse-session-id>内将<session-config>设置为false。

我希望这会有所帮助。