Symfony 2:我如何检查用户是否没有login模板?

在Symfony 2模板(使用Twig)中,如何有效检查用户是否未login?

我不想使用ROLE检查。 我想要一个简单的方法来检查用户是否没有login。

我知道,比较app.user.usernameanon作品,但是这只是不适合我。

你可以检查是否设置了app.user。

  {% if app.user %} # user is logged in {% else %} # user is not logged in {% endif %} 

虽然现在的答案是回答OP的问题,但我想补充一些细节。

我知道OP不想检查angular色,但是我将其包括在内,所以其他SO用户将来可以复制和粘贴。 – 每次我谷歌,我最终在这里!

Symfony Doc资料来源:


检查是否有用户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_ADMINROLE_ADMINROLE_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?