Symfony 在模拟另一个用户后获得原始用户
Symfony get original user after impersonate another
我正在使用 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
我只需要有办法获得原始用户或至少获得他的角色。
谢谢!
我找到了解决方案:
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,此函数 return 为真。
我正在使用 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
我只需要有办法获得原始用户或至少获得他的角色。
谢谢!
我找到了解决方案:
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,此函数 return 为真。