2011-07-18 25 views
7

Me gustaría configurar la aplicación Spring MVC utilizando la seguridad Spring de la siguiente manera.Configuración básica de Spring Security

  1. Solo se permite un inicio de sesión simultáneo.
  2. Cuando la sesión HTTP caduque, el usuario será redirigido a /security/sessionTimeout.html
  3. cuando el usuario inicie sesión con éxito, será redirigido a la carpeta "/".
  4. 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:

  1. soy capaz de iniciar sesión con la misma cuenta en 2 navegadores diferentes (sin concurrencia el control está funcionando)
  2. 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?

+0

el elemento b) está sucediendo probablemente porque no permitiste el acceso a la url '/' por parte de ningún usuario. – bluefoot

+0

¿qué versión de primavera estás usando? – Simeon

+0

@Simeon, 3.0.5 y Spring 3.0.4 –

Respuesta

2

De the Spring Security documentation:

Para utilizar el soporte de sesiones simultáneas, que tendrá que añadir lo siguiente a web.xml:

<listener> 
    <listener-class> 
    org.springframework.security.web.session.HttpSessionEventPublisher 
    </listener-class> 
</listener> 

¿Ha agregado esto?

+0

Parece que lo tengo, pero publiqué toda mi configuración web.xml en la actualización. –

+0

Esto no resolvió el problema para mí. –

Cuestiones relacionadas