Dans les modèles Symfony 2 (utilisant Twig), comment puis-je vérifier efficacement si un utilisateur n'est pas connecté?
Je ne veux pas utiliser de ROLE
chèques. Je veux un moyen simple de vérifier si un utilisateur n'est pas connecté.
Je suis conscient que comparer app.user.username
avec des anon
œuvres, mais cela ne me semble pas juste.
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
plutôt. Voir la documentation Symfony2 : symfony.com/doc/current/book/… . Également disponible pour Silex: silex.sensiolabs.org/doc/providers/…{% if is_granted('IS_AUTHENTICATED_FULLY') %}
ne retournera true que si l'utilisateur s'est authentifié dans la session en cours. Il retournera false si l'utilisateur s'est authentifié via un cookie Remember me. L'utilisation{% if app.user %}
est correcte, si l'on veut retourner true quel que soit le moment où l'utilisateur s'est authentifié.{% if app.security.token is null or app.security.token.user == 'anon.' %}
c'est comme ça que je l'ai fait fonctionner pour moiBien que la réponse actuelle réponde à la question du PO, j'aimerais ajouter plus de détails.
Je comprends que l'OP ne voulait pas vérifier les rôles, mais je les inclut afin que d'autres utilisateurs SO puissent copier et coller à partir de cela à l'avenir. - à chaque fois que je cherche sur Google, je me retrouve ici!
Sources de documentation Symfony:
Vérifiez si un utilisateur s'est connecté (quel que soit son rôle)
Comme répondu, vous pouvez utiliser
app.user
pour vérifier si un utilisateur est connecté.Vérification de l'état d'authentification
Vous pouvez utiliser la
is_granted()
méthode pour vérifierROLES
, (ci-dessous sont tous les rôles attribués par symfony, vous pouvez également avoir vos propres rôles (plus ci-dessous) )à partir de la documentation:
Vérification des rôles
Vous pouvez également utiliser
is_granted()
pour vérifier les rôles.En supposant que nous avons 3 rôles (
ROLE_SUPER_ADMIN
,ROLE_ADMIN
, etROLE_USER
)Faire ce qui précède dans un contrôleur
Afficher la réponse suivante: Comment vérifier si un utilisateur est connecté à Symfony2 à l'intérieur d'un contrôleur?
la source
-%}
et{%-
représente? pourquoi pas%}
et{%
?-
supprime tous les espaces à la fin afin qu'il soit plus lisible dans la source source du navigateur. Plus d'informations ici: twig.sensiolabs.org/doc/templates.html#whitespace-controlapp.user
, va comme çaThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
. Je ne me souviens pas où j'ai lu que app.user renvoie «anon». chaîne malheureusement et dans quelles circonstances.The representation of the current user or null if there is none.
, elle sera donc nulle. Un bundle tiers peut renvoyer une chaîne si sonUserInterface
implémentation personnalisée a une__toString()
méthode qui est appelée lorsqu'elle est anonyme.