【问题标题】:Yii2 RBAC DbManager error Call to a member function getRole() on nullYii2 RBAC DbManager 错误调用成员函数 getRole() on null
【发布时间】:2014-11-10 23:30:58
【问题描述】:

我已经通过实现 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 传递。

请帮忙。谢谢。

【问题讨论】:

    标签: php yii2 rbac


    【解决方案1】:

    你走错路了。

    这里的问题似乎是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

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

    【讨论】:

      【解决方案2】:

      我似乎已经通过替换解决了这个问题

      $auth = Yii::$app->authManager;
      

      $auth = new DbManager;
      

      如果这是错误的做法,请告诉我!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-06
        • 2020-11-19
        • 1970-01-01
        • 2020-01-19
        相关资源
        最近更新 更多