Yii2 RBAC不遵守默认角色设置

Yii2 RBAC不遵守默认角色设置,yii2,default,role,rbac,Yii2,Default,Role,Rbac,我有一个角色叫“新”。虽然我没有显式地设置它,但我希望它在用户注册后立即成为默认角色。我正在使用dektrium提供的Yi2用户和Yi2 rbac扩展 我的组件中有以下内容 'authManager' => [ 'class' => 'yii\rbac\DbManager', 'defaultRoles' => ['new'], ], 但是,以下返回false if (Yii::$app->user->can('new')) 下面返回一个空数组

我有一个角色叫“新”。虽然我没有显式地设置它,但我希望它在用户注册后立即成为默认角色。我正在使用dektrium提供的Yi2用户和Yi2 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配置,要么我对该设置的期望是错误的。感谢您的帮助。

此:

Yii::$app->user->can('new')
应该可以工作(应该返回
true
),确保您没有覆盖应用程序配置中的其他地方的
defaultRoles
(这是常见错误,尤其是在高级应用程序中)

我建议在它前面检查一下
Yii::$app->authManager->defaultRoles
所包含的内容。似乎没有您添加的新角色

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

还请注意:

Yii::$app->authManager->getRolesByUser($userId);
返回所有角色,无默认值。这是故意的

然而

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

返回包括默认角色在内的所有角色。

嗨,我打印了一张(Yii::$app->authManager->defaultRoles),注意到数组是空的。由于某种原因,它没有设置好。我在默认/索引页面上进行了测试。任何想法。@ShahidThaika检查它是否被您正在使用的扩展覆盖。检查他们的文档,也许还有另一种设置方法。我写的东西在没有扩展的情况下工作得很好。是的,我认为扩展不尊重这个领域,因为我刚刚进行了一次新的安装和测试,但没有任何成功。@ShahidThaika我也在没有这些扩展的情况下进行了测试。您使用的是哪个版本的Yii2?composer为我下载的最新基本版本,而不是Yii2高级版本。因此,我正在为yii2用户和yii2 rbac使用dektrium。