108 votes

Symfony 2 : Comment vérifier si un utilisateur n'est pas connecté dans un modèle ?

Dans les modèles Symfony 2 (en utilisant Twig), comment puis-je vérifier efficacement si un utilisateur n'est pas connecté ?

Je ne veux pas utiliser ROLE des contrôles. Je veux un moyen simple de vérifier si un utilisateur n'est pas connecté.

Je suis conscient que comparer app.user.username avec anon fonctionne, mais ça ne me semble pas correct.

200voto

Checksum Points 1439

Vous pouvez vérifier si app.user est défini.

 {% if app.user %}
    # user is logged in
 {% else %}
    # user is not logged in
 {% endif %}

103voto

JustAnil Points 4635

Bien que la réponse actuelle réponde à la question de l'OP, je voudrais ajouter des détails supplémentaires.

Je comprends que le PO ne voulait pas vérifier les rôles, mais je les inclus afin que d'autres utilisateurs de l'OS puissent copier et coller à partir de ce document à l'avenir. - Chaque fois que je cherche sur Google, je finis ici !

Symfony Doc Sources :


Vérifier si un utilisateur s'est connecté (quel que soit son rôle)

En guise de réponse, vous pouvez utiliser app.user pour vérifier si tout l'utilisateur est connecté.

{% if app.user %}
    # user is logged in (any and all users, regardless of ROLE_*)
{% elseif not app.user %}
    # user is not logged in (note the `not` in the `elseif` statement)
{% endif %}

Vérification de l'état d'authentification

Vous pouvez utiliser le is_granted() pour vérifier la présence de ROLES (Les rôles ci-dessous sont tous attribués par symfony, vous pouvez également avoir vos propres rôles). (plus bas) )

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
    # This user entered their credentials THIS session
{% elseif is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    # User logged in via a cookie (ie: Auth again before doing sensitive things)
{% elseif is_granted('IS_AUTHENTICATED_ANONYMOUSLY') %}
    # This is a `guest` or anonymous user
{% endif %}

de la documentation :

IS_AUTHENTICATED_ANONYMOUSLY - automatiquement attribué à un utilisateur qui est dans une partie du site protégée par un pare-feu mais qui ne s'est pas réellement connecté. Ceci n'est possible que si l'accès anonyme a été autorisé.

IS_AUTHENTICATED_REMEMBERED - automatiquement attribué à un utilisateur qui a été authentifié via un cookie "remember me".

IS_AUTHENTICATED_FULLY - automatiquement assigné à un utilisateur qui a fourni ses données de connexion pendant la session en cours.


Vérification des rôles

Vous pouvez également utiliser is_granted() pour vérifier les rôles.
En supposant que nous ayons 3 rôles ( ROLE_SUPER_ADMIN , ROLE_ADMIN , & ROLE_USER )

{% if is_granted('ROLE_SUPER_ADMIN') -%}
    # You're `ROLE_SUPER_ADMIN`
{% elseif is_granted('ROLE_ADMIN') -%}
    # You're `ROLE_ADMIN`
{% elseif is_granted('ROLE_USER') -%}
    # You're `ROLE_USER`
{% else %}
    # You're a `nobody` ;P
{%- endif %}

Faire ce qui précède dans un contrôleur

Voir la réponse suivante : Comment vérifier si un utilisateur est connecté à Symfony2 dans un contrôleur ?

Prograide.com

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.

Powered by:

X