Logout / Tempo limite de sessão com segurança de primavera
Estou usando o spring / spring-security 3.1 e quero tomar alguma ação sempre que o usuário fizer logout (ou se a sessão tiver expirado). Eu consegui fazer a ação para o logout, mas para o tempo limite da sessão, não consigo fazê-lo funcionar.
No web.xml eu só tenho o ContextLoaderListener especificado (pode este ser o problema?) E, claro, o DelegatingFilterProxy.
Eu uso a configuração automática assim.
<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>
O manipulador de logout é chamado quando o usuário clica em logout, o que fará algumas chamadas para um banco de dados.
Mas como faço para lidar com o tempo limite da sessão?
Uma maneira de lidar com isso seria injetar o nome de usuário na sessão quando o usuário fizer login e, em seguida, usar um httpsessionlistener comum e fazer a mesma coisa no tempo limite da sessão.
Existe uma maneira semelhante com a segurança de primavera, de modo que quando a primavera descobre que a sessão é o tempo limite, eu posso ligar lá, acessar a autenticação e obter o UserDetails de lá e fazer a limpeza.