身份验证后无法重置 JSESSIONID

Posted

技术标签:

【中文标题】身份验证后无法重置 JSESSIONID【英文标题】:Cannot Reset JSESSIONID After Authentication 【发布时间】:2018-09-15 13:20:48 【问题描述】:

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

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

...

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

但是 JSESSIONID 没有被重置。我在这里想念什么吗?是因为在 ghostSession 失效后对其进行的操作会阻止 JSESSIONID 被重置?

顺便说一句,我使用 Resin 4.X 作为我的 Web 容器。

谢谢。

【问题讨论】:

【参考方案1】:

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

基本上是在做组合

request.getSession(false).invalidate();
request.getSession(true);

不会触发 Resin 重置 JSESSIONID。

另外,HttpSession.changeSessionId() 仅在 Servlet 3.1 之后才受支持,Resin 4.0.X 不支持 Servlet 3.1。

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

我希望这会有所帮助。

【讨论】:

以上是关于身份验证后无法重置 JSESSIONID的主要内容,如果未能解决你的问题,请参考以下文章

sql身份验证密码怎么复制

带有 JSON 的 Spring security facebook 身份验证插件不会创建 jsessionid

JSESSIONID 或 X-AUTH-TOKEN 在 Spring boot 中对同一用户进行身份验证时重复

Spring Security 3.1.4:由于anonymousUser身份验证无法访问目标页面

JSESSIONID 是如何传递的?作为标头参数还是作为 cookie 参数?

重置基本身份验证与