Я использую 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 и выполнить очистку.