Yii2 RBAC不遵守默认角色设置
我有一个角色叫“新”。虽然我没有显式地设置它,但我希望它在用户注册后立即成为默认角色。我正在使用dektrium提供的Yi2用户和Yi2 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')) 下面返回一个空数组
'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。