Symfony 2: Как я могу проверить, не вошел ли пользователь в шаблон? - PullRequest
97 голосов
/ 12 марта 2012

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

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

Я знаю, что сравнение app.user.username с anon работает, но мне это просто не подходит.

Ответы [ 2 ]

187 голосов
/ 12 марта 2012

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

 {% if app.user %}
    # user is logged in
 {% else %}
    # user is not logged in
 {% endif %}
90 голосов
/ 12 мая 2014

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

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

Источники 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 cookie.

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 внутри контроллера?

...