Перехват тайм-аута выхода из системы/сеанса с помощью весенней безопасности

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

32
задан jasilva 5 March 2014 в 19:32
поделиться