Symfony 2:Как проверить, не вошел ли пользователь в шаблон?



в шаблонах Symfony 2 (используя Twig), как я могу эффективно проверить, не вошел ли пользователь в систему?



Я не хочу использовать ROLE проверка. Я хочу простой способ проверить, если пользователь не вошел в систему.



Я знаю, что сравнение app.user.username С anon работает, но это просто не кажется мне правильным.

630   2  

2 ответов:

вы можете проверить, если приложение.пользователь установлен.

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

хотя текущий ответ отвечает на вопрос OP, я хотел бы добавить больше деталей.

Я понимаю, что OP не хотел проверять роли, но я включаю их так, чтобы другие пользователи могли копировать и вставлять из этого в будущем. - каждый раз, когда я гуглю это, я оказываюсь здесь!

Symfony Doc Источники:


проверьте, если любой пользователь вошел в систему (независимо от роли)

как ответил, Вы можете использовать app.user чтобы проверить, если любой пользователь вошел в систему.

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

проверка состояния проверка подлинности

вы можете используйте is_granted() способ проверки ROLES, (ниже приведены все роли, назначенные symfony, вы также можете иметь свои собственные роли (больше ниже))

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

документы:

IS_AUTHENTICATED_ANONYMOUSLY-автоматически назначается пользователю, который в брандмауэре защищена часть сайта, но кто на самом деле не имеет зарегистрированный. Это возможно только в том случае, если разрешен анонимный доступ.

IS_AUTHENTICATED_REMEMBERED-автоматически назначается пользователю, который был аутентификация через файл cookie remember me.

IS_AUTHENTICATED_FULLY-автоматически назначается пользователю, который имеет предоставил свои регистрационные данные во время текущей сессии.


Проверка Ролей

вы также можете использовать is_granted() для проверки ролей.
Предположим у нас есть 3 роли (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 %}

делать выше внутри контроллера

посмотреть следующий ответ: Как проверить, если пользователь вошел в Symfony2 внутри контроллера?

Comments

    Ничего не найдено.