我想知道,有没有办法在Spring Security中禁用remember-me? 我想实现的场景很常见:关闭浏览器窗口后,我希望用户的会话过期。看起来很奇怪,但它不适用于Tomcat 7& Spring Security 3.1。 我们在Spring Security配置文件中使用auto-config,但是没有remember-me元素。
让它运作的最佳解决方案是什么?提前谢谢!
更新以下是澄清我的问题的使用方案:
新症状: 用户很可能是重新认证的,因为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中删除。
我的网络应用有什么问题?
答案 0 :(得分:0)
为什么不通过重定向到以下命令注销现有用户:/ j_spring_security_logout?
答案 1 :(得分:0)
在我使用最新的Spring安全性和Tomcat 6的实现中,我使用以下配置:它与您的相似吗?
<http use-expressions="true" access-denied-page="/Error.xhtml">
<intercept-url access="isAuthenticated()" pattern="/secure.xhtml"/>
<form-login />
<logout invalidate-session="true" logout-success-url="/search.xhtml"/>
</http>
答案 2 :(得分:0)
您可以尝试添加logouthandler
来终止本地会话:
<!-- Logout handler terminating local session -->
<bean id="logoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler">
<property name="invalidateHttpSession" value="true" />
</bean>
实际上它默认为true,因此您可能不需要设置属性。
答案 3 :(得分:0)
我遇到了同样的问题:我的浏览器会记住我的用户。
通常:在登录访问受限区域后,关闭浏览器,然后重新打开它并输入相同的限制区域,当我希望提示输入凭据时,它会让我访问它。
在玩完之后我注意到一件重要的事情:这种行为在浏览器中不一致:
更多浏览器类型&amp;版本可以测试......
可能有更好的解决方案,如果我找到它,我会更新这个答案。