Answers:
您可以检查是否设置了app.user。
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
代替。参见Symfony2 doc:symfony.com/doc/current/book/…。也可用于Silex:silex.sensiolabs.org/doc/providers/…–
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
仅在用户在当前会话中已通过身份验证时才返回true。如果用户通过“记住我” cookie进行了验证,它将返回false。{% if app.user %}
如果无论用户何时进行身份验证都希望返回true,则使用是正确的。
{% if app.security.token is null or app.security.token.user == 'anon.' %}
这就是我为我工作的方式
尽管当前答案回答了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进行身份验证的用户。
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?
-%}
和{%-
主张?为什么不%}
和{%
?
-
删除所有尾随空格,以它的浏览器源源更具可读性。此处的更多信息:twig.sensiolabs.org/doc/templates.html#whitespace-control
app.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返回“ anon”。不幸的是在什么情况下弦。
The representation of the current user or null if there is none.
,因此它将为null。如果第三方捆绑包的自定义UserInterface
实现具有__toString()
在匿名时调用的方法,则它可能会返回字符串。
{% if not app.user %}