Symfony没有扮演角色

时间:2013-11-13 12:35:13

标签: security symfony

我已成功切换到_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

2 个答案:

答案 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

您可能在没有实际切换用户的情况下打开您的页面。