Symfony 2:Как проверить, не вошел ли пользователь в шаблон?
в шаблонах Symfony 2 (используя Twig), как я могу эффективно проверить, не вошел ли пользователь в систему?
Я не хочу использовать ROLE проверка. Я хочу простой способ проверить, если пользователь не вошел в систему.
Я знаю, что сравнение app.user.username С anon работает, но это просто не кажется мне правильным.
2 ответов:
вы можете проверить, если приложение.пользователь установлен.
{% if app.user %} # user is logged in {% else %} # user is not logged in {% endif %}
хотя текущий ответ отвечает на вопрос OP, я хотел бы добавить больше деталей.
Я понимаю, что OP не хотел проверять роли, но я включаю их так, чтобы другие пользователи могли копировать и вставлять из этого в будущем. - каждый раз, когда я гуглю это, я оказываюсь здесь!
Symfony Doc Источники:
- http://symfony.com/doc/current/book/security.html
- http://symfony.com/doc/current/cookbook/security/remember_me.html
проверьте, если любой пользователь вошел в систему (независимо от роли)
как ответил, Вы можете использовать
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