我需要在用户注销时删除cookie JSESSIONID。要做到这一点我已经添加下面的配置到我的安全配置:SpringSecurity:无法删除JSESSIONID
<http>
<form-login login-page="/login*" authentication-failure-url="/login?try_again" />
<http-basic />
<logout logout-url="/logout" delete-cookies="JSESSIONID" />
<session-management invalid-session-url="/timeout" />
<intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
...
</http>
但是,而不是被删除,cookie将被刚刚成为复制:
所以一直将浏览器重定向到“/ timeout”URL。
我试图追查这是怎么回事使用Chrome网络浏览器的开发者工具,我发现,这个cookie建立与此响应头:
Set-Cookie:JSESSIONID=CFF85EA743724F23FDA0317A75CFAD44; Path=/website/; HttpOnly
而与此响应头删除:
Set-Cookie:JSESSIONID=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/website
我不确定,但它似乎是这些标题的“路径”字段中的原因:第一个指向“/ website /”,第二个指向“ /网站”。
难道是所描述麻烦的原因吗?如果不是原因(或不是唯一原因),那么其他原因是什么?我应该如何解决这个问题?
见http://static.springsource.org/spring-security/site/docs/3.2.x/reference/springsecurity-single.html#ns-session- mgmt(第3.3.3节)...不幸的是,这不能保证与每个servlet容器一起工作,所以你需要在你的环境中测试它。另请参阅相关的脚注。 – Ritesh 2013-04-11 12:47:12