Spring Security中如何防止多次登录
Posted
技术标签:
【中文标题】Spring Security中如何防止多次登录【英文标题】:How to prevent multiple login in Spring Security 【发布时间】:2013-10-03 19:00:54 【问题描述】:我有以下弹簧安全配置。当我在第一次成功登录和注销后添加会话管理属性时,我无法再次登录。它会将我重定向到 authentication-failure-url。如果我删除它,它工作正常。我可以成功重新加入。我在会话管理方面做错了什么?
<http auto-config='false' use-expressions="true">
<intercept-url pattern="/login" access="permitAll"/>
<intercept-url pattern="/j_spring_security_check" access="permitAll"/>
<logout logout-success-url="/login.xhtml" invalidate-session="true" delete-cookies="JSESSIONID"/>
<form-login login-page="/login.xhtml"
login-processing-url="/j_spring_security_check"
default-target-url="/pages/index.xhtml"
always-use-default-target="true"
authentication-failure-url="/login.xhtml?error=true"/>
<custom-filter before="FORM_LOGIN_FILTER" ref="customAjaxControlFilter" />
<session-management invalid-session-url="/login.xhtml">
<concurrency-control error-if-maximum-exceeded="true" max-sessions="1" expired-url="/login.xhtml"/>
</session-management>
</http>
【问题讨论】:
请查看this FAQ。 @LukeTaylor 是的,它解决了我的问题,谢谢。 【参考方案1】:确保您已将侦听器添加到您的 web.xml 文件中。确保在会话被销毁时通知 Spring Security 会话注册表是很重要的。没有它,会话信息将不会从注册表中删除。
<listener>
<listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>
【讨论】:
以上是关于Spring Security中如何防止多次登录的主要内容,如果未能解决你的问题,请参考以下文章
防止 Spring Security 在登录/注销后进行 302 重定向
无法使用带有自定义 UserDetail 和 AuthenticationProvider 的 Spring Security 来阻止用户多次登录
[Java][Spring][scurity]同步session控制,防止一个用户多次登录
如何使用 Spring Security 做一个 RESTful 登录 API?