Yii2 RBAC不尊重默认角色设置

时间:2016-05-20 05:04:00

标签: yii2 default role rbac

我有一个名为'new'的角色。虽然我没有明确设置它,但我希望它在用户注册后立即成为默认角色。我正在使用dektrium的yii2-user和yii2-rbac扩展。

我的组件中有以下内容......

'authManager' => [
    'class' => 'yii\rbac\DbManager',
    'defaultRoles' => ['new'],
],

但是,以下内容返回false ...

if (Yii::$app->user->can('new'))

以下返回一个空数组......

print_r(Yii::$app->authManager->getRolesByUser( Yii::$app->user->identity->id ));

我不知道该往哪里看。我仔细检查了一下,看到在RBAC配置视图中正确设置了“新”角色。

由于某种原因,Yii2不符合我的defaultRole配置,或者我的期望是错误的设置。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

此:

Yii::$app->user->can('new')

应该有效(应该返回true),确保你没有在应用程序配置中的其他地方覆盖defaultRoles(这是常见错误,尤其是在高级应用程序中)。

我建议您先检查一下Yii::$app->authManager->defaultRoles包含的内容。似乎没有您添加的new角色。

换句话说,RBAC尊重defaultRoles选项,所以这是你的错误。

另请注意:

Yii::$app->authManager->getRolesByUser($userId);

返回没有默认值的所有角色。这是设计的。

然而

Yii::$app->authManager->getRoles();

返回所有角色,包括默认角色。