Je voudrais faire quelque chose comme ça dans le contrôleur pour déconnecter l'utilisateur :
$user = $this->get('security.context')->getToken()->getUser();
$user->logOut();
Je voudrais faire quelque chose comme ça dans le contrôleur pour déconnecter l'utilisateur :
$user = $this->get('security.context')->getToken()->getUser();
$user->logOut();
Si vous utilisez symfony 4.x (je n'ai pas testé d'autres versions, donc cela peut toujours fonctionner), vous pouvez utiliser le gestionnaire de déconnexion interne de symfony (fortement recommandé, car il s'occupera de tout pour vous de manière propre, cookies et tout). Vous n'avez pas besoin d'écrire trop de code pour cela non plus, vous pouvez simplement émuler une demande de déconnexion :
... // Some code, that leads you to force logout the user
// Emulating logout request
$logoutPath = $this->container->get('router')->generate('app_logout');
$logoutRequest = Request::create($logoutPath);
$logoutResponse = $this->container->get('http_kernel')->handle($logoutRequest);
// User is logged out now
... // Stuff to do after logging out, eg returning response
Cela permettra à Symfony de faire le flux de réponse à la demande, et donc d'appeler le gestionnaire de déconnexion en interne. Cette méthode vous permet de passer à du code personnalisé supplémentaire. Autrement, si vous invoquez uniquement le gestionnaire de déconnexion ici, vous devriez doivent renvoie la réponse habituelle de déconnexion, qui est maintenant en $logoutResponse
. En option, si vous voulez le rendre, vous devez aussi simplement :
return $logoutResponse;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.