В шаблонах Symfony 2 (с использованием Twig), как я могу эффективно проверить, не вошел ли пользователь в систему?
Я не хочу использовать ROLE
чеки. Мне нужен простой способ проверить, не вошел ли пользователь в систему.
Я знаю, что сравнивать app.user.username
с anon
работами, но мне это кажется неправильным.
symfony
authentication
twig
symfony-2.1
Инструмент
источник
источник
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
Вместо этого используйте . См. Документ Symfony2: symfony.com/doc/current/book/… . Также доступно для Silex: Silex.sensiolabs.org/doc/providers/…{% if is_granted('IS_AUTHENTICATED_FULLY') %}
вернет истину только в том случае, если пользователь прошел аутентификацию в текущем сеансе. Он вернет false, если пользователь аутентифицирован с помощью файла cookie «запомнить меня». Использование{% if app.user %}
правильно, если нужно вернуть истину независимо от того, когда пользователь аутентифицирован.{% if app.security.token is null or app.security.token.user == 'anon.' %}
вот как у меня это сработалоХотя текущий ответ отвечает на вопрос ОП, я хотел бы добавить более подробную информацию.
Я понимаю, что OP не хотел проверять роли, но я включаю их, чтобы другие пользователи SO могли копировать и вставлять их в будущем. - каждый раз, когда я гуглию, я оказываюсь здесь!
Источники документации Symfony:
Проверить, вошел ли в систему какой-либо пользователь (независимо от роли)
Как ответил, вы можете использовать ,
app.user
чтобы проверить , если какой - либо пользователь вошел в систему .Проверка статуса аутентификации
Вы можете использовать этот
is_granted()
метод для проверкиROLES
(Ниже приведены все роли, назначенные Symfony, у вас также могут быть свои собственные роли (подробнее ниже) )из документов:
Проверка ролей
Вы также можете использовать
is_granted()
для проверки ролей.Предположим , что мы имеем 3 роли (
ROLE_SUPER_ADMIN
,ROLE_ADMIN
, &ROLE_USER
)Выполнение вышеуказанного внутри контроллера
Просмотрите следующий ответ: Как проверить, вошел ли пользователь в Symfony2 внутри контроллера?
источник
-%}
и{%-
расшифровывается? почему бы%}
и нет{%
?-
Удаляет все конечные пробелы так , что это более удобным для чтения в источнике исходного браузера. Подробнее здесь: twig.sensiolabs.org/doc/templates.html#whitespace-controlapp.user
такThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
. Я не помню, где я читал, что app.user возвращает «анон». строка к сожалению и при каких обстоятельствах.The representation of the current user or null if there is none.
, поэтому она будет пустой. Сторонний пакет может вернуть строку, если в его пользовательскойUserInterface
реализации есть__toString()
метод, который вызывается при анонимности.