2013-09-27 82 views
0

当我尝试使用其他浏览器登录时成功登录后,它将我重定向到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?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> 

编辑:顺便说一句,我成功注销后重定向我无效会话的URL。我不明白发生了什么事。

+0

请阅读[手册的这一部分](http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-session-mgmt): )。 –

+0

@LukeTaylor不是我的问题。我检查并成功删除了Cookie。 – hellzone

+0

对不起,我的错。 –

回答

0

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

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

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

+0

现在,当我尝试登录第二个浏览器它的作品,但原始会话(第一个浏览器)刚冻结。此外,我可以访问第一个浏览器的网页。 – hellzone

+0

您的配置中似乎没有任何受保护的资源,因此没有什么可阻止您访问页面。 –

+0

我有,但我没有写他们的问题,因为有太多。像<拦截网址模式=“/同事/ *”访问=“hasAnyRole('superadmin','管理')”/>。我发现它也检查登录页面的会话。 – hellzone