Logout / Session Timeout Fang mit Frühlingssicherheit
Ich verwende spring / spring-security 3.1 und möchte Maßnahmen ergreifen, wenn sich der Benutzer abmeldet (oder wenn die Sitzung abgelaufen ist). Ich habe es geschafft, die Aktion für das Abmelden auszuführen, aber für das Sitzungs-Timeout kann ich es nicht zum Laufen bringen.
In web.xml habe ich nur den ContextLoaderListener angegeben (kann dies das Problem sein?) Und natürlich den DelegatingFilterProxy.
Ich benutze die Auto-Konfiguration wie folgt.
<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>
Der Logout-Handler wird aufgerufen, wenn der Benutzer auf Logout klickt, wodurch eine Datenbank aufgerufen wird.
Aber wie gehe ich mit dem Sitzungs-Timeout um?
Eine Möglichkeit wäre, den Benutzernamen in die Sitzung einzufügen, wenn sich der Benutzer anmeldet und dann einen normalen httpsessionlistener verwendet und dasselbe beim Sitzungszeitlimit tut.
Gibt es eine ähnliche Möglichkeit bei der Spring-Sicherheit, sodass ich mich dort einhängen und auf die Authentifizierung zugreifen kann, um die Benutzerdetails von dort abzurufen und die Bereinigung durchzuführen, wenn Spring feststellt, dass die Sitzung abgelaufen ist.