首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2 RBAC不尊重默认的角色设置。

Yii2 RBAC不尊重默认的角色设置。
EN

Stack Overflow用户
提问于 2016-05-20 05:03:59
回答 1查看 428关注 0票数 2

我有一个叫“新”的角色。虽然我没有显式设置它,但我希望它在用户注册后立即成为默认角色。我正在使用yii2 2-用户和yii2-rbac扩展由dektrium。

我的部件里有以下内容..。

代码语言:javascript
复制
'authManager' => [
    'class' => 'yii\rbac\DbManager',
    'defaultRoles' => ['new'],
],

但是,下面返回false..。

代码语言:javascript
复制
if (Yii::$app->user->can('new'))

下面还返回一个空数组..。

代码语言:javascript
复制
print_r(Yii::$app->authManager->getRolesByUser( Yii::$app->user->identity->id ));

我不知道该去哪儿找。我在RBAC配置视图中检查并看到了正确设置的“新”角色。

由于某些原因,要么是Yii2不尊重我的defaultRole配置,要么是我对该设置的期望是错误的。感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 07:11:45

这是:

代码语言:javascript
复制
Yii::$app->user->can('new')

如果工作(应该返回true),请确保您没有在应用程序配置中的其他地方过过defaultRoles (这是常见的错误,特别是在高级应用程序中)。

我建议先检查一下Yii::$app->authManager->defaultRoles包含的内容。似乎没有您添加的new角色。

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

还请注意这一点:

代码语言:javascript
复制
Yii::$app->authManager->getRolesByUser($userId);

返回默认情况下的所有角色。这是故意的。

然而,

代码语言:javascript
复制
Yii::$app->authManager->getRoles();

返回所有角色,包括默认角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37338277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档