Завершение сеанса выхода из системы / выхода из системы с защитой весны
Я использую 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 и делать то же самое по истечении времени ожидания сеанса.
Существует ли аналогичный способ с безопасностью Spring, так что когда Spring обнаруживает, что сеанс истекает, я могу подключиться к нему, получить доступ к Аутентификации и получить оттуда UserDetails и выполнить очистку.