【发布时间】:2012-04-21 17:21:04
【问题描述】:
我想知道,有没有办法在 Spring Security 中禁用记住我? 我想要实现的场景很常见:关闭浏览器窗口后,我希望用户的会话过期。看起来很奇怪,但它不适用于 Tomcat 7 和 Spring Security 3.1。 我们在 Spring Security 配置文件中使用了 auto-config,但是没有 remember-me 元素。
让它发挥作用的最佳解决方案是什么?提前致谢!
更新这是澄清我的问题的使用场景:
- 用户登录到受限区域,例如 /secure.html
- 然后他关闭浏览器而不手动注销。
- 他再次打开浏览器并直接转到 /secure.html。
- 当前 Spring 的行为:页面显示成功。预期行为:重定向到登录页面。
新症状用于鉴别诊断: 用户很可能重新认证,因为浏览器关闭/打开之间的 JSESSIONID 相同。如何让 Tomcat 或 Spring 为每个浏览器会话生成一个新会话?
更新 Spring Security 配置片段:
<http auto-config="true">
<anonymous key="anonymous-security" />
<intercept-url pattern="/auth/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/**" access="ROLE_ADMIN" />
<form-login login-page="/auth/login.html"
default-target-url="/auth/default.html"
authentication-failure-url="/auth/failed.html" />
<logout logout-success-url="/auth/logout.html" delete-cookies="JSESSIONID" />
</http>
更新文档 claims 自 3.0 以来 auto-config="true" 中没有默认的 remember-me 配置(我们使用 3.1):
在 3.0 之前的版本中,此列表还包括 remember-me 功能。这可能会导致一些令人困惑的错误 配置并在 3.0 中被删除。
我的网络应用出了什么问题?
【问题讨论】:
-
remember-me cookie 设置了吗?
-
@artplastika:我可能误解了你的问题,如果不是你可能对我在下面提供的答案很感兴趣
标签: java spring session tomcat spring-mvc