2010-01-04 144 views
4

我的j2ee應用程序使用spring安全問題。我將併發會話控制中的最大會話設置爲1.現在,當我嘗試登錄第二次會阻止我時,它工作正常。但是,當我註銷其他人並嘗試再次登錄時,我仍然收到相同的消息。Spring Security Max登錄會話

您的登錄嘗試失敗,請重試。 原因:1此主體最大會話我的HTTP安全突破

我有這個

<security:logout logout-url="/logout.do" 
    invalidate-session="true" logout-success-url="/logoutSuccess.do" /> 
<security:concurrent-session-control 
    max-sessions="1" exception-if-maximum-exceeded="true" expired-url="/loginform.do" /> 

回答

6

它已經相當一段時間,因爲你張貼了這個,但如果其他人是否有這個問題,我相信,如果你不加org.springframework.security.web.session.HttpSessionEventPublisher如在web.xml監聽器會發生此行爲。

here

添加監聽器web.xml中引起每一個HttpSession開始或結束時間發佈到Spring的ApplicationContext一個ApplicationEvent。這很關鍵,因爲它允許在會話結束時通知SessionRegistryImpl。如果沒有它,即使用戶退出其他會話或超時,用戶將永遠無法再次重新登錄。
0

請檢查錯誤頁面不被緩存(按F5),並期待在日誌中是否註銷工作正常。

+0

我按了F5,消息仍然存在。這是什麼意思 – cedric 2010-01-05 08:09:08

0
  1. 確保您的Spring Security Filters在您的Struts過濾器之前運行。
  2. 在Spring Security的LogoutFilter.doFilterHttp方法中設置一個斷點。確保部件正常運行。