Я использую 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>
Обработчик выхода из системы вызывается, когда пользователь нажимает кнопку выхода, что приводит к некоторым обращениям к базе данных.
Но как мне справиться с тайм-аутом сеанса???
Один из способов справиться с этим - ввести имя пользователя в сеанс, когда пользователь входит в систему, а затем использовать обычный httpssessionlistener и сделать то же самое по тайм-ауту сеанса.
Есть ли аналогичный способ с безопасностью Spring, чтобы, когда Spring обнаружил, что сеанс истек, я мог подключиться туда,получить доступ к аутентификации и получить оттуда UserDetails и выполнить очистку.