如何模拟用户
编辑本页一个>警告:您正在浏览的文档欧宝体育电话<一个href="//www.oldmanjams.com/releases/3.0">欧宝娱乐app下载地址Symfony 3.0一个>,现已不再维护。
读<一个href="//www.oldmanjams.com/doc/current/security/impersonating_user.html">本页的更新版本一个>用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
方法可以轻松地模拟用户switch_user
防火墙侦听器:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
# app / config / security.yml安全:#……防火墙:主要:#……switch_user:真正的
要切换到另一个用户,只需使用_switch_user
参数和用户名作为当前URL的值:
1
http://example.com/somewhere?_switch_user=thomas
若要切换回原始用户,请使用特殊_exit
用户名:
1
http://example.com/somewhere?_switch_user=_exit
在模拟过程中,为用户提供了一个名为ROLE_PREVIOUS_ADMIN
.例如,在模板中,此角色可用于显示退出模拟的链接:
- 嫩枝
- PHP
1 2 3
{%如果is_granted (ROLE_PREVIOUS_ADMIN) %}<一个href="{{path('主页',{'_switch_user': '_exit'})}}">退出模拟一个>{%endif%}
在某些情况下,您可能需要获取表示模拟用户而不是模拟用户的对象。使用下面的代码片段遍历用户的角色,直到找到一个SwitchUserRole
对象:
12 3 4 5 6 7 8 9 10 11 12 13
使用欧宝娱乐app下载地址\组件\安全\核心\角色\SwitchUserRole;$authChecker=$这->get (“security.authorization_checker”);$tokenStorage=$这->get (“security.token_storage”);如果($authChecker->isGranted (“ROLE_PREVIOUS_ADMIN”)) {foreach($tokenStorage->getToken ()->将getRoles ()作为$角色) {如果($角色运算符SwitchUserRole) {$impersonatingUser=$角色->getSource ()->getUser ();打破;}}}
当然,这个特性需要提供给一小部分用户。默认情况下,访问限制为具有ROLE_ALLOWED_TO_SWITCH
的角色。方法修改此角色的名称角色
设置。方法更改查询参数名称,以提高安全性参数
设置:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
# app / config / security.yml安全:#……防火墙:主要:#……switch_user:{角色:ROLE_ADMIN,参数:_want_to_be_this_user}