Yii2 Rbac(DbManager)-返回null

Yii2 Rbac(DbManager)-返回null,yii2,rbac,Yii2,Rbac,Yii::$app->user->can('do_all')在我的用户输入时返回null(在db中只有1个用户)。 我做错了什么 1) -我创建了4个表 auth_asignment: item_name => do_all, user_id => 1 auth_item: name => do_all, type => 1 auth_item_child: empty auth_rule: empty 2) -我在config/web.php

Yii::$app->user->can('do_all')在我的用户输入时返回null(在db中只有1个用户)。 我做错了什么

1) -我创建了4个表

auth_asignment:  item_name => do_all, user_id => 1
auth_item:       name => do_all, type => 1
auth_item_child: empty
auth_rule:       empty
2) -我在config/web.php中添加了

'components' => [
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
        'defaultRoles' => ['guest'],
    ]
]
3) -在控制器中,我添加了

public function actionIndex()
{
    if(Yii::$app->user->can('do_all')){
        return $this->render('index');
    }
    else{
        throw new ForbiddenHttpException('The requested page is not exist.');
    }
}

我认为您应该在auth_item_child中添加值,并以这种方式组织值

尝试以这种方式添加角色

auth_item:        name => do_all_role, type => 1

auth_item_child   parent: do_all_role,  child : do_all

auth_asignment:  item_name => do_all_role, user_id => 1
和使用(注意类名,通常用户类名以大写字符开头)


非常感谢。您更新的答案给了我一些想法-问题是,我使用刚刚安装的yii2,我的登录用户默认为用户-他不在数据库中-他在类用户中,id为100。我在数据库中也有一个用户(id为1),但这个用户的表不包括在应用程序中,这是另一个用户,他有id为1。我把班上的id从100改为1,它开始工作了。
 Yii::$app->User->can('do_all');