Yii2 RBAC DbManager错误在null上调用成员函数getRole()

时间:2014-11-10 23:30:59

标签: php yii2 rbac

我已经通过实现SQL代码来设置表和rbac / init脚本来填充角色/权限来设置数据库等。

我在创建用户时有一个assign()但是我一直在getRole()上收到这个错误:

yii \ base \ ErrorException在null上调用成员函数getRole()

   public function addUser()
{
    if($this->validate()) {
        $user = new User();
        $auth_key = Yii::$app->getSecurity()->generateRandomString(32);
        $this->password = Yii::$app->getSecurity()->generatePasswordHash($this->password);

        $user->email = $this->email;
        $user->password = $this->password;
        $user->active = $this->active;
        $user->firstname = $this->firstname;
        $user->lastname = $this->lastname;
        // $user->nickname = $this->nickname;
        $user->datecreated = time();
        $user->auth_key = $auth_key;
        $user->save(false);

        $auth = Yii::$app->authManager;
        $authorRole = $auth->getRole($this->role);
        $auth->assign($authorRole, $user->getId());

        return $user;
    }else{
        return false;
    }
}

$ role变量与其他用户属性一起通过$ _POST传递。

请帮忙。感谢。

2 个答案:

答案 0 :(得分:4)

你走错了路。

这里的问题似乎是Yii::$app->authManager未设置。这可能意味着您的main.php配置文件不包含正确的信息。 它应包含以下组件:

return [
    // ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        // ...
    ],
];

http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#configuring-rbac-manager

在上面链接的示例中,使用 PhpManager ,但在您的情况下,您将需要使用 yii \ rbac \ DbManager

这样做意味着您只有一个已加载的管理器,并且还会解锁所有操作过滤选项。

答案 1 :(得分:0)

我似乎已经通过替换

解决了这个问题
$auth = Yii::$app->authManager;

$auth = new DbManager;

请告诉我这是否是错误的方法!