Too*_*ool 98 authentication symfony twig symfony-2.1
在Symfony 2模板(使用Twig)中,如何有效地检查用户是否未登录?
我不想用ROLE支票.我想要一种直接的方法来检查用户是否未登录.
我知道app.user.username与anon作品相比,但这对我来说感觉不对.
Che*_*sum 188
您可以检查是否设置了app.user.
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}
Run Code Online (Sandbox Code Playgroud)
Ani*_*nil 95
虽然目前的答案回答了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 %}
Run Code Online (Sandbox Code Playgroud)
您可以使用该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 %}
Run Code Online (Sandbox Code Playgroud)
来自文档:
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 %}
Run Code Online (Sandbox Code Playgroud)
查看以下答案:如何检查用户是否在控制器内登录Symfony2?
| 归档时间: |
|
| 查看次数: |
78642 次 |
| 最近记录: |