Me gustaría configurar la aplicación Spring MVC utilizando la seguridad Spring de la siguiente manera.Configuración básica de Spring Security
- Solo se permite un inicio de sesión simultáneo.
- Cuando la sesión HTTP caduque, el usuario será redirigido a /security/sessionTimeout.html
- cuando el usuario inicie sesión con éxito, será redirigido a la carpeta "/".
- Cuando los usuarios cierran sesión, se le redirigirá a "/" también.
de haberla configurado de la siguiente manera:
<security:http>
<security:form-login login-page="/security/login.html" login-processing-url="/login" authentication-failure-url="/login.jsp?login_error=1" default-target-url="/"/>
<security:session-management invalid-session-url="/security/sessionTimeout.html">
<security:concurrency-control max-sessions="1" />
</security:session-management>
<security:logout logout-url="/logout" logout-success-url="/"/>
</security:http>
y tengo las siguientes cuestiones:
- soy capaz de iniciar sesión con la misma cuenta en 2 navegadores diferentes (sin concurrencia el control está funcionando)
- cuando hago clic en cerrar sesión me redirigen a "/security/sessionTimeout.html" en lugar de "/".
He seguido la guía de referencia de seguridad de Spring. ¿Qué estoy haciendo mal?
Actualizado: Así es como se ve mi web.xml.
Actualización 2: basta con ejecutar log4j en modo de depuración y esto es lo que tengo al hacer clic en Cerrar sesión:
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 1 of 11 in additional filter chain; firing Filter: 'ConcurrentSessionFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 2 of 11 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'
DEBUG [http-8080-2] (HttpSessionSecurityContextRepository.java:130) - No HttpSession currently exists
DEBUG [http-8080-2] (HttpSessionSecurityContextRepository.java:88) - No SecurityContext was available from the HttpSession: null. A new one will be created.
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 3 of 11 in additional filter chain; firing Filter: 'LogoutFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 4 of 11 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 5 of 11 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 6 of 11 in additional filter chain; firing Filter: 'RequestCacheAwareFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 7 of 11 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 8 of 11 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
DEBUG [http-8080-2] (AnonymousAuthenticationFilter.java:67) - Populated SecurityContextHolder with anonymous token: 'org.sprin[email protected]9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 9 of 11 in additional filter chain; firing Filter: 'SessionManagementFilter'
DEBUG [http-8080-2] (SessionManagementFilter.java:87) - Requested session IDD8429BBAAA9561A97E1D2350ED63BC35 is invalid.
DEBUG [http-8080-2] (SessionManagementFilter.java:90) - Starting new session (if required) and redirecting to '/security/sessionTimeout.html'
se siente como si tuviera filtro sesión de managment aplica sobre /index.html
y luego no hay sesión. ¿Cómo puedo resolverlo?
el elemento b) está sucediendo probablemente porque no permitiste el acceso a la url '/' por parte de ningún usuario. – bluefoot
¿qué versión de primavera estás usando? – Simeon
@Simeon, 3.0.5 y Spring 3.0.4 –