我有一个叫“新”的角色。虽然我没有显式设置它,但我希望它在用户注册后立即成为默认角色。我正在使用yii2 2-用户和yii2-rbac扩展由dektrium。
我的部件里有以下内容..。
'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配置,要么是我对该设置的期望是错误的。感谢你的帮助。
发布于 2016-05-20 07:11:45
这是:
Yii::$app->user->can('new')如果工作(应该返回true),请确保您没有在应用程序配置中的其他地方过过defaultRoles (这是常见的错误,特别是在高级应用程序中)。
我建议先检查一下Yii::$app->authManager->defaultRoles包含的内容。似乎没有您添加的new角色。
换句话说,RBAC尊重defaultRoles选项,所以这是您的错误。
还请注意这一点:
Yii::$app->authManager->getRolesByUser($userId);返回默认情况下的所有角色。这是故意的。
然而,
Yii::$app->authManager->getRoles();返回所有角色,包括默认角色。
https://stackoverflow.com/questions/37338277
复制相似问题