Symfony 2: Comment puis-je vérifier si un utilisateur n'est pas connecté à l'intérieur d'un modèle?

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

Je ne veux pas utiliser ROLE chèques. Je veux un moyen simple pour vérifier si un utilisateur n'est pas connecté.

je suis conscient que comparer app.user.username avec anon fonctionne, mais cela ne me semble pas juste.

89
demandé sur Mohammed Zayan 2012-03-12 05:39:52

2 réponses

vous pouvez vérifier si app.l'utilisateur est défini.

 {% if app.user %}
    # user is logged in
 {% else %}
    # user is not logged in
 {% endif %}
174
répondu Checksum 2013-03-01 17:49:34

bien que la réponse actuelle réponde à la question de L'OP, j'aimerais ajouter plus de détails.

je comprends que L'OP ne voulait pas vérifier les rôles, mais je les inclus afin que d'autres utilisateurs peuvent copier et coller à partir de cela dans le futur. - chaque fois que je cherche ça sur google, je finis ici!

Symfony Doc Sources:


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 tout 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 du statut d'authentification

vous pouvez utiliser la méthode is_granted() pour vérifier ROLES , (ci-dessous sont tous les rôles attribués par symfony, vous pouvez également avoir vous-même les rôles (plus ci-dessous) )

{% 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 %}

à partir de la documentation:

IS_AUTHENTICATED_ANONYMOUSLY - automatiquement assigné à un utilisateur qui est dans une partie du site protégée par un pare-feu, mais qui n'a pas consigner dans. Cela n'est possible que si un accès anonyme a été autorisé.

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

IS_AUTHENTICATED_FULLY - automatiquement assigné à un utilisateur qui a fourni leurs détails de connexion pendant la session en cours.


Vérification Des Rôles

vous pouvez aussi utiliser is_granted() pour vérifier les rôles.

En supposant que nous avons 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 est ci-dessus à l'intérieur d'un contrôleur

Afficher la réponse suivante: Comment faire pour vérifier si un utilisateur est connecté dans Symfony2 à l'intérieur d'un contrôleur?

86
répondu Anil 2017-05-23 10:31:19