El truco con la invalidación de la sesión no funciona. Parece que la autenticación de Spring almacena la ID de la sesión en algún lugar y acepta la COOKIE incluso si la sesión se invalida.
Otra solución es eliminar el contexto de seguridad del resorte manualmente:
public void manualLogout() {
SecurityContextHolder.getContext().setAuthentication(null);
}
Aquí está el código, cómo iniciar una sesión de usuario manualmente (si alguien necesita):
public void doManualLogin(HttpServletRequest request, String u, String p) {
UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(u, p);
token.setDetails(new WebAuthenticationDetails(request));
Authentication auth = authenticationProvider.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(auth);
}
donde el AuthenticationProvider es el frijol de su configuración de resorte que implementa
org.springframework.security.authentication.AuthenticationProvider
pero de esta manera, sigue siendo mi ejemplo de URL mostrará las páginas después de cerrar la sesión .. – Nirmal
Usted puede consultar con getSession (http://java.sun.com/javaee/5 /docs/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29) si una sesión todavía está activa. O cuida su información de autenticación en la sesión. Tienes que hacer esto en un interceptor o en cada controlador. –
Es posible que también deba borrar las cookies que haya configurado para admitir la funcionalidad "recordarme". De lo contrario, volverá a iniciar sesión la próxima vez que visite el sitio. – David