我正在使用Symfony 3.4,并且正在使用模拟用户功能:https://symfony.com/doc/3.4/security/impersonating_user.html
当我冒充用户时需要原始用户。.我不知道该怎么办。
在模拟过程中,为用户提供了一个称为ROLE_PREVIOUS_ADMIN的特殊角色,是否可以更改此角色?
例如,如果我的原始用户是ROLE_ADMIN,则特殊角色是ROLE_PREVIOUS_ADMIN,但是如果我的原始用户是ROLE_SOMETHING,则自定义角色应该是:ROLE_PREVIOUS_SOMETHING
我只需要有一种方法来获取原始用户或至少获取他的角色。
谢谢!
答案 0 :(得分:1)
我找到了解决方法:
public function isImpersonatorAdmin()
{
$impersonatorUser = false;
if ($this->security->isGranted('ROLE_PREVIOUS_ADMIN')) {
foreach ($this->security->getToken()->getRoles() as $role) {
if ($role instanceof SwitchUserRole) {
$impersonatorUser = $role->getSource()->getUser()->hasRole('ROLE_ADMIN');
break;
}
}
}
return $impersonatorUser;
}
如果模拟者是ROLE_ADMIN,则此函数返回true。