我已成功切换到_switch_user=thomas
的用户。
但是,当它应该返回true时,以下内容总是返回false:
$security = $this->get('security.context');
$impersonated = $security->isGranted('ROLE_PREVIOUS_ADMIN');
die(var_dump($impersonated)); // == false
为什么我不能在安全上下文中获得ROLE_PREVIOUS_ADMIN?
修改 我用以下地址登录:
?_switch_user=john@doe.com
自:
providers:
main:
entity:
property: email
我的参数是默认值:
switch_user: true
我正确切换,这不是问题。
问题出在我模仿之后,用户没有ROLE_PREVIOUS_ADMIN
答案 0 :(得分:1)
很可能您没有为User
类实现EquatableInterface
:
class User implements UserInterface, EquatableInterface, \Serializable {
// ...
public function isEqualTo(UserInterface $user) {
return $this->email === $user->getEmail();
}
public function serialize() {
return serialize(array(
$this->id,
$this->email,
));
}
public function unserialize($serialized) {
list($this->id, $this->email) = unserialize($serialized);
}
// ...
}
答案 1 :(得分:0)
User
对象吗?什么是用户名值?config.yml
内检查模拟参数确实称为_switch_user
。您可能在没有实际切换用户的情况下打开您的页面。