Spring Security 3.1 – Redirigir automáticamente a la página de inicio de sesión cuando se produce el tiempo de espera de la sesión

Tengo una aplicación de wenb basada en Spring y estoy implementando Spring Security 3.1.

Lo que necesito es poder redirigir automáticamente a la página de inicio de sesión, cuando se produzca el tiempo de espera de sesión configurado. Estoy implementando páginas web que contienen mucha funcionalidad jQuery, así que necesito poder redirigir automáticamente.

Lo que sucede actualmente, cuando pasa el tiempo de espera de la sesión, no es hasta que se realiza una acción: envío de la página que redirige a la página de inicio de sesión.

my springsecurity.xml:

     <!--    -->  

Y en mi web.xml tengo:

   10  

No creo que deba hacerlo usted mismo, Spring se encarga de esto por sí solo. ¡Esa es la grandeza de Spring!

¡¡¡LO INTENTARÍA !! hacer es algo como esto:

  • configure la seguridad de spring de forma que NO envíe un código de estado http 200 (OK) redirigir (303/307) a la página de inicio de sesión, sino otra cosa que el manejador ajax pueda detectar, por ejemplo, el código de estado 401 (no autorizado)
  • configure el cliente ajax de forma que maneje el código 401 (o lo que sea que use) correcto, por ejemplo, mostrando la página de inicio de sesión

Tenemos este escenario manejado al establecer el estado de respuesta a 403 . La siguiente pieza de código en nuestro login.jsp hace el truco:

 <% response.setStatus(HttpServletResponse.SC_FORBIDDEN); %> 

Contras son, cuando accede a la página de inicio de sesión, la consola del navegador mostraría que la solicitud de login devolvió 403 .

Una vez hecho esto, las llamadas ajax fallarán y pasarán al estado de falla donde puede verificar el estado, mostrar el mensaje de que la sesión ha expirado.