Spring安全会话管理无效

时间:2013-09-27 14:00:16

标签: spring spring-security

当我尝试使用其他浏览器登录成功登录后,它将我重定向到authentication-failure-url。为什么它不会重定向到expired-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?error=sessionExpired" session-authentication-error-url="/login.xhtml?error=alreadyLogin">
        <concurrency-control error-if-maximum-exceeded="true" max-sessions="1" expired-url="/login.xhtml?error=expired"/>            
</session-management>

编辑:顺便说一下,在我成功注销后,它会将我重定向到invalid-session-url。我不明白发生了什么。

1 个答案:

答案 0 :(得分:0)

这是预期的行为。从手册:

  

第二次登录将被拒绝。 “被拒绝”是指如果使用基于表单的登录,用户将被发送到authentication-failure-url。

如果您设置error-if-maximum-exceeded="true",则会发生这种情况。

如果您尚未设置error-if-maximum-exceeded="true",则会使用expired-url参数。在这种情况下,将允许新登录,原始会话将被标记为已过期,如果您尝试使用它,您将被重定向到此URL。