2013-09-27 161 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