我使用的是spring/spring-security 3.1,並且希望在用戶註銷時(或者如果會話超時)採取一些操作。我設法完成註銷操作,但會話超時,我無法使其工作。註銷/會話超時捕捉彈簧安全
在web.xml中,我只指定了ContextLoaderListener(這可能是問題嗎?),當然還有DelegatingFilterProxy。
我使用像這樣的自動配置。
<security:http auto-config="false" use-expressions="false">
<security:intercept-url pattern="/dialog/*"
access="ROLE_USERS" />
<security:intercept-url pattern="/boa/*"
access="ROLE-USERS" />
<security:intercept-url pattern="/*.html"
access="ROLE-USERS" />
<security:form-login login-page="/auth/login.html"
default-target-url="/index.html" />
<security:logout logout-url="/logout"
invalidate-session="true"
delete-cookies="JSESSIONID" success-handler-ref="logoutHandler" />
</security:http>
<bean id="logoutHandler" class="com.bla.bla.bla.LogoutHandler">
<property name="logoutUrl" value="/auth/logout.html"/>
</bean>
當用戶點擊註銷的註銷處理程序被調用,這將使到數據庫幾個電話。
但是,我該如何處理會話超時?
處理它的一種方法是在用戶登錄時將用戶名注入會話中,然後使用普通的httpsessionlistener並在會話超時時執行相同的操作。
是否有類似的方式與春季安全,所以當春天發現會話超時,我可以掛在那裏,訪問身份驗證,並從那裏得到UserDetails並進行清理。
從我的pov這是更好的解決方案。我強烈建議使用這個,就像我一樣。 Thx約翰。順便說一句:這也處理「正常」登出! – 2014-02-07 12:53:23
在使用'Spring Security'的時候,會話中提到的是,它等同於HTTPSession還是Spring安全會話?另一方面,新的'春季會議'組件似乎提供了一個解決方案http://docs.spring.io/spring-session/docs/current/reference/html5/#api-redisoperationssessionrepository/sessiondestroyedevent – yathirigan 2015-03-11 04:59:27
@yathirigan不確定你的意思是「春季安全會議」。 Spring Security使用HTTP會話,所以基本上它是一樣的。 – John29 2015-03-11 14:15:40