Ale*_*ski 22 impersonation symfony
在使用Symfony2构建的应用程序中,我们希望superadmins能够模仿其他用户.通过为superadmin用户提供ROLE_ALLOWED_TO_SWITCH角色,可以轻松完成此操作.通过调用"somewhere?_switch_user ="来实现切换,如参考文档中所述.
然而,问题是在模板中检测当前用户是否实际被模拟,以便在页面上打印到"某处?_switch_user = _exit"的链接,从而使模仿用户能够返回到她的真实用户.
Cro*_*zin 31
我有一段时间没有使用Symfony2所以我不确定,但当你切换到另一个用户时,你获得分配给该用户的所有角色和一个额外的角色:ROLE_PREVIOUS_ADMIN.所以我想你需要做的就是使用选民来检查是否使用选民将这样的角色分配给当前用户.
// Twig
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<a href="...?_switch_user=_exit">EXIT</a>
{% endif %}
// PHP
<?php if ($view['security']->isGranted('ROLE_PREVIOUS_ADMIN')): ?>
<a href="...?_switch_user=_exit">EXIT</a>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
Sir*_*ara 18
有关如何获取有关模仿者的更多详细信息的示例:
use Symfony\Component\Security\Core\Role\SwitchUserRole;
$sec = $this->get('security.context');
if($sec->isGranted('ROLE_PREVIOUS_ADMIN')) {
foreach($sec->getToken()->getRoles() as $role) {
if ($role instanceof SwitchUserRole) {
$admin_user = $role->getSource()->getUser();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您将admin_user作为原始用户对象.请记住使用SwitchUserRole.
| 归档时间: |
|
| 查看次数: |
6399 次 |
| 最近记录: |