Symfony 2:我如何检查用户是否没有login模板?
在Symfony 2模板(使用Twig)中,如何有效检查用户是否未login?
我不想使用ROLE
检查。 我想要一个简单的方法来检查用户是否没有login。
我知道,比较app.user.username
与anon
作品,但是这只是不适合我。
你可以检查是否设置了app.user。
{% if app.user %} # user is logged in {% else %} # user is not logged in {% endif %}
虽然现在的答案是回答OP的问题,但我想补充一些细节。
我知道OP不想检查angular色,但是我将其包括在内,所以其他SO用户将来可以复制和粘贴。 – 每次我谷歌,我最终在这里!
Symfony Doc资料来源:
- http://symfony.com/doc/current/book/security.html
- http://symfony.com/doc/current/cookbook/security/remember_me.html
检查是否有用户login(不pipeangular色)
如回答,您可以使用app.user
来检查是否有用户login。
{% 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 %}
检查validation状态
你可以使用is_granted()
方法来检查ROLES
,(下面是所有由symfony指定的angular色,你也可以有你自己的angular色(更多) )
{% 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 – 自动分配给位于站点的防火墙保护部分但尚未实际login的用户。只有在允许匿名访问的情况下才能执行此操作。
IS_AUTHENTICATED_REMEMBERED – 自动分配给通过记住我cookie进行身份validation的用户。
IS_AUTHENTICATED_FULLY – 自动分配给在当前会话期间提供其login详细信息的用户。
检查angular色
您也可以使用is_granted()
来检查angular色。
假设我们有3个angular色( 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 %}
在控制器内部进行上述操作
查看以下答案: 如何检查用户是否在控制器内部loginSymfony2?