2012-01-23 24 views
5

Uso Spring Security 3 en mi aplicación web JSF2.tiempo de espera de la sesión de seguridad de primavera

que tienen una regla de seguridad para proporcionar tiempos de espera de sesión:

<session-management invalid-session-url="/faces/paginas/autenticacion/login.xhtml?error=1" /> 

Así que cuando la sesión ha expirado y el usuario hace clic en cualquier enlace, es redirigido a la página de inicio de sesión. En esta página, compruebo el parámetro de error y muestro un mensaje que dice que la sesión ha expirado.

Pero tengo 2 problemas:

(1) Cuando el arranque de la aplicación por primera vez (se trata de mostrar la página principal), estoy redirigido a la página de inicio de sesión diciendo sesión ha expirado. Creo que esto puede estar sucediendo porque la primera vez que ejecuta la aplicación, la sesión es nueva, y Spring Security quizás "piensa" que ha expirado (no distingue entre una nueva sesión y un tiempo de espera excedido).

(2) Si la sesión ha expirado para usuarios anónimos (aún no autenticados), me redirigen al tiempo de espera de la página de inicio de sesión también. No deseo este comportamiento para usuarios no autenticados, solo quiero verificar los tiempos de espera para usuarios autenticados.

¿Cómo puedo resolver estos dos problemas?

Gracias de antemano.

Respuesta

6

Desea utilizar la propiedad expired-session-url para las sesiones caducadas, no el invalid-session-url. Son para dos cosas diferentes.

+0

Estoy usando la versión 3.0.7 de Spring Security, y no hay ninguna propiedad de "expired-session-url" en ella. En la Documentación de referencia de 3.0.7, utilizan la propiedad "invalid-session-url" para detectar los tiempos de espera (página número 15 del documento pdf). Pero, como dices, la sesión no válida no es lo mismo que la sesión caducada. ¿Conoces alguna solución? – choquero70

+0

Para obtener la flexibilidad que está buscando (puede diferenciar entre sesiones perdidas e inválidas), es posible que deba cambiar a una configuración ligeramente más avanzada. La sección 11.3 de los documentos indica que hay una propiedad 'expiredUrl' en el filtro de concurrencia: http://static.springsource.org/spring-security/site/docs/3.0.x/reference/session-mgmt.html – cdeszaq

+0

Esta respuesta también puede ayudarlo: http://stackoverflow.com/questions/2693268/spring-security-session-expiration-without-redirect-to-expired-url – cdeszaq

Cuestiones relacionadas