Yii2 RBAC 不遵守默认角色设置

Yii2 RBAC does not respect default role setting

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

我的组件中有以下...

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

然而,以下returns错误...

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

下面的returns也是一个空数组...

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

我不知道去哪里找。我仔细检查并看到 'new' 角色在 RBAC 配置视图中正确设置。

由于某些原因,要么 Yii2 不遵守我的 defaultRole 配置,要么我的预期设置有误。感谢任何帮助。

这个:

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

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

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

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

另请注意:

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

returns 没有默认的所有角色。这是设计使然。

但是

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

return所有角色,包括默认角色。