我有一个名为'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配置,或者我的期望是错误的设置。感谢任何帮助。
答案 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();
返回所有角色,包括默认角色。