L'astuce avec l'invalidation de session ne fonctionne pas. Il semble que l'authentification Spring tamponne l'ID de session quelque part et accepte le COOKIE même si la session a été invalidée.
Une autre solution est d'effacer le contexte de sécurité du printemps manuellement:
public void manualLogout() {
SecurityContextHolder.getContext().setAuthentication(null);
}
Voici le code, comment se connecter utilisateur manuellement (si quelqu'un a besoin):
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);
}
où le authenticationProvider est le haricot de votre configuration de ressort qui implémente
org.springframework.security.authentication.AuthenticationProvider
mais cette façon, toujours mon exemple d'URL affiche les pages après .. – Nirmal
fermeture de session Vous pouvez vérifier avec getSession (http://java.sun.com/javaee/5 /docs/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29) si une session est toujours active. Ou vous vous occupez de vos informations d'authentification dans la session. Vous devez le faire dans un intercepteur ou chaque contrôleur. –
Vous devrez peut-être également supprimer les cookies que vous avez configurés afin de prendre en charge la fonctionnalité "remember me". Sinon, vous vous reconnecterez la prochaine fois que vous visiterez le site. – David