7
votes

Comment implémenter la fonction de déconnexion à l'aide de Spring Web MVC

Je suis nouveau à Spring Web MVC ..

Puis-je obtenir un exemple ou un lien en ligne qui me montre comment implémenter la fonctionnalité de déconnexion à l'aide de Spring Web MVC?

Je ne veux pas utiliser la caractéristique intégrée de la sécurité du printemps (c'est-à-dire Acegi) ..

Merci d'avance ...


0 commentaires

3 Réponses :


9
votes

Il vous suffit d'invalider la session et l'utilisateur est déconnecté. Ceci est directement pris en charge par l'API de servlet: httpsession.invalidate () . Vous pouvez écrire un contrôleur qui n'appelle que invalidez.

class Logout implements Controller{
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
   ModelAndView view = //?;
   request.getSession().invalidate();
   return view;
 }      
}


2 commentaires

Vous pouvez vérifier avec la greveysession ( Java.sun.com/javae/5/docs/api/javax/servlet/http/... ) Si une session est toujours active. Ou vous prenez soin de vos informations d'authentification dans la session. Vous devez le faire dans un intercepteur ou chaque contrôleur.


Vous devrez peut-être également effacer tous les cookies que vous avez peut-être définis afin de soutenir la fonctionnalité "Souvenir Me". Sinon, vous vous connecterez immédiatement dans la prochaine fois que vous visiterez le site.



15
votes

Le truc avec l'invalidation de la session ne fonctionne pas. Il semble que l'authentification du ressort témoigne de la session ID quelque part et accepte le cookie même, si la session était invalidée.

Une autre solution consiste à effacer manuellement le contexte de sécurité du ressort: p>

org.springframework.security.authentication.AuthenticationProvider


0 commentaires

1
votes
@Controller
    public class LogoutController {

        @RequestMapping(value="/logout",method = RequestMethod.GET)
        public String logout(HttpServletRequest request){
            HttpSession httpSession = request.getSession();
            httpSession.invalidate();
            return "redirect:/";
        }

    }
Please use above code to implement logout filter

1 commentaires

Comment cela va rediriger vers la page de connexion lorsque la session expire. Pouvez-vous s'il vous plaît fournir un autre scénario.