Yii2 Rbac(DbManager) - 返回null

时间:2015-11-14 11:31:29

标签: 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中添加了

'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.');
    }
}

1 个答案:

答案 0 :(得分:1)

我认为你在auth_item_child中添加值并以这种方式组织值

尝试以这种方式添加角色

   void Application_BeginRequest(object sender, EventArgs e)
    {
      if() //check your condition
        HttpContext.Current.RewritePath("your html file");
    }

并使用(注意类名称通常User类名称以大写字符开头)

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