请注意
匿名用户在技术上进行身份验证,这意味着isAuthenticated ()
一个匿名用户对象的方法将返回true。检查用户是否实际上是经过验证的,检查的IS_AUTHENTICATED_FULLY
的角色。
在一个树枝模板可以通过访问这个对象app.user
调用的关键<一个href=”https://github.com/symfony/symfony/blob/2.1/src/Symfony/Bundle/FrameworkBundle/Templating/GlobalVariables.php" class="reference external" title="GlobalVariables: getUser ()”rel="external noopener noreferrer" target="_blank">GlobalVariables: getUser ()一个>方法:
1
<p>用户名:{{app.user。用户名}}< /p>
现在,所有将使用的身份验证机制chain_provider
,因为它是第一个指定。的chain_provider
反过来,尝试加载用户的in_memory
和user_db
提供者。
您还可以配置防火墙和个人身份验证机制使用特定的提供者。再一次,除非显式地指定一个提供者,第一供应商总是使用:
1 2 3 4 5 6 7 8 9 10
# app / config / security.yml安全:防火墙:secured_area:#……供应商:user_dbhttp_basic:域:“安全演示区”供应商:in_memoryform_login:~
在本例中,如果用户试图通过HTTP身份验证登录,身份验证系统将使用in_memory
用户提供者。但是,如果用户试图通过表单登录,登录user_db
提供者将使用(因为它是整个防火墙的默认值)。
关于用户提供者和防火墙配置的更多信息,见<一个href=”https://欧宝娱乐app下载地址www.oldmanjams.com/做c/2.1/reference/configuration/security.html" class="reference internal">安全配置参考一个>。
请注意
如果你使用这个函数不在一个URL存在防火墙活跃,就会抛出一个异常。再一次,这是几乎总是一个好主意有防火墙主要覆盖所有url(如已被证明在这一章)。
请注意
防火墙必须活跃或时将抛出一个异常isGranted
方法被调用。看到上面的注意模板的更多细节。
切换回原来的用户,使用特别的_exit
用户名:
1
http://example.com/somewhere?_switch_user=_exit
在模拟过程中,用户提供的一个特殊的角色ROLE_PREVIOUS_ADMIN
。例如,在一个模板,这个角色可以用来表示退出模拟链接:
1 2 3
{%如果is_granted (ROLE_PREVIOUS_ADMIN) %}<一个href=”{{路径(“主页”,{_switch_user:‘_exit})}}”>退出模拟< /一个>{%endif%}
当然,这个功能需要提供一个小的用户组。默认情况下,用户访问被限制的ROLE_ALLOWED_TO_SWITCH
的角色。这个角色的名称可以修改通过角色
设置。额外的安全,还可以通过改变查询参数名称参数
设置:
1 2 3 4 5 6
# app / config / security.yml安全:防火墙:主要:#……switch_user:{角色:ROLE_ADMIN,参数:_want_to_be_this_user}
请注意
如果你使用一个表单登录,Symfony2将创建一个欧宝娱乐app下载地址cookie即使你设置无状态的
来真正的
。