Avertissement : Vérification de 'IS_AUTHENTICATED_FULLY'
seul renverra false si l'utilisateur s'est connecté en utilisant la fonctionnalité "Remember me".
Selon la documentation de Symfony 2, il y a 3 possibilités :
EST_AUTHENTIFIÉ_ANONYMEMENT - automatiquement attribué à un utilisateur qui se trouve dans une partie du site protégée par un pare-feu mais qui ne s'est pas encore connecté. Cela n'est possible que si l'accès anonyme a été autorisé.
EST_AUTHENTIFIÉ_REMEMBERED - automatiquement attribué à un utilisateur qui a été authentifié via un cookie "remember me".
EST_AUTHENTIFIÉ_COMPLÈTEMENT - automatiquement attribué à un utilisateur qui a fourni ses données de connexion pendant la session en cours.
Ces rôles représentent trois niveaux d'authentification :
Si vous avez le IS_AUTHENTICATED_REMEMBERED
rôle, alors vous avez aussi le site IS_AUTHENTICATED_ANONYMOUSLY
rôle. Si vous avez le IS_AUTHENTICATED_FULLY
vous avez également les deux autres rôles. En d'autres termes, ces rôles représentent trois niveaux d'augmentation. "d'authentification.
J'ai rencontré un problème où les utilisateurs de notre système qui avaient utilisé la fonctionnalité "Se souvenir de moi" étaient traités comme s'ils ne s'étaient pas connectés du tout sur des pages qui ne vérifiaient que la présence d'un numéro d'identification. 'IS_AUTHENTICATED_FULLY'
.
La solution consiste alors à leur demander de se reconnecter s'ils ne sont pas pleinement authentifiés, ou à vérifier le rôle mémorisé :
$securityContext = $this->container->get('security.context');
if ($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
// authenticated REMEMBERED, FULLY will imply REMEMBERED (NON anonymous)
}
J'espère que cela évitera à quelqu'un de faire la même erreur que moi. J'ai utilisé ce même article comme référence lorsque j'ai cherché comment vérifier si quelqu'un était connecté ou non sur Symfony 2.
Source : http://symfony.com/doc/2.3/cookbook/security/remember_me.html#forcing-the-user-to-re-authenticate-before-accessing-certain-resources
0 votes
Ne pouvez-vous pas vérifier si $user != "anon." ?
0 votes
Eh bien, je cherchais quelque chose de plus "sûr". N'y a-t-il pas un autre moyen, c'est-à-dire une fonction à appeler ?