2011-06-10 138 views
1

我有一個共同的登錄和註銷屏幕。當我登錄後登出...我來登錄頁面。彈簧安全性的默認行爲使註銷時的會話無效,所以如果我嘗試使用相同的屏幕登錄,我會重定向到主頁,因爲在該點沒有可用的會話。期望的行爲應可在簽出簽入立即,這是不會發生由於會話無效註銷後立即登錄導致重定向到主頁

<http use-expressions="true" access-denied-page="/access-denied"> 
    <intercept-url pattern="/secured/user/sign-up" access="hasAnyRole('ROLE_USER','ROLE_ANONYMOUS')" /> 
    <intercept-url pattern="/secured/user/sign-in" access="hasRole('ROLE_ANONYMOUS')" /> 
    <intercept-url pattern="/secured/**" requires-channel="https" /> 
    <intercept-url pattern="/user/dashboard/**" access="hasAnyRole('ROLE_IC')" /> 
    <intercept-url pattern="/**" access="permitAll" 
     requires-channel="http" /> 
    <form-login login-page="/secured/user/sign-in" 
     authentication-success-handler-ref="authenticationSuccessHandler" 
     authentication-failure-url="/secured/user/sign-in" /> 
    <logout logout-success-url="/secured/user/sign-in?loggedout=true" 
     logout-url="/secured/logout"/> 
    <security:session-management 
     session-fixation-protection="none"> 
    </security:session-management> 
</http> 

如果你指的是XML,你會看到/secured/user/sign-in用於登錄和兩註銷

我該如何處理這個問題?

+0

我不明白這個問題完全...你註銷後就會重定向到重新登錄才能得到解決有關此問題?你能否描述所需的行爲? – Simeon 2011-06-14 07:18:24

+0

我有一個共同的登錄和註銷屏幕。當我登錄後登出...我來登錄頁面。彈簧安全性的默認行爲使註銷時的會話無效,所以如果我嘗試使用相同的屏幕登錄,我會重定向到主頁,因爲在該點沒有可用的會話。希望的行爲應該能夠在註銷後立即登錄,這不會由於會話失效而發生。讓我知道如果你需要更多的澄清 – Abhi 2011-06-14 12:28:24

+0

@abhi不,這是完美的,謝謝。 – Simeon 2011-06-14 12:37:36

回答

0

我設法用invalidate-session="false"

0

我認爲這是一個「現在」的解決方案。

您可以:

  1. 聲明你在你的web.xml自己HttpSessionEventPublisher

    <listener> 
        <listener-class>org.yourcompany.MyHttpSessionEventPublisher</listener-class> 
    </listener> 
    
  2. HttpSessionEventPublisherHttpSessionDestroyedEvent並且不允許春天無效SEESION。

我不確定這是否是一個「正確」的解決方案,但它應該工作。

+0

這已經可以在春季作爲invalidate-session =「false」,但需要知道如何不使用它,因爲我想在註銷後使會話無效 – Abhi 2011-06-15 09:49:56

相關問題