我已经运行了一个Spring security 3.2.5.RELEASE应用程序并具有以下配置:
<intercept-url pattern="/Login.html*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
并且,在同一个<http>
标签内......
<logout invalidate-session="true"
logout-success-url="/Login.html?msg=logout"
delete-cookies="JSESSIONID" />
<http
&gt;中的其他端点element要求用户进行身份验证,并invalid-session-url="/Login.html"
注销后,我的浏览器似乎被重定向到Login.html?msg=logout
,然后再次重定向到Login.html
。
这让我认为/Login.html*
没有正确匹配,我不确定如何更改拦截网址以允许匹配。
答案 0 :(得分:0)
所以看起来最近升级到Spring Security 3.2.5.RELEASE已经改变了我们的应用程序处理无效会话的方式。 access="IS_AUTHENTICATED_ANONYMOUSLY"
现在似乎仍然检查无效会话,当重定向到网址Login.html?msg=logout
时,仍在服务器上解析sessionId。由于它不再是有效的sessionId,因此客户端被重定向到invalid-session-url
。
我的解决方案是将Login.html页面放在自己的<http>
标记中,security="none"
。
新的Login元素如下所示:
<http pattern="/Login.**" security="none"/>
注意:我还需要将公共资源路径放在自己的<http security="none">
标记中,以便“登录”页面可以访问它们。