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所有角色,包括默认角色。
我有一个名为 '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所有角色,包括默认角色。