YII2中的RBAC:用户->;PHPManager中的can()
我正在尝试在我的项目中使用Yii2高级应用程序版本配置带有phpmanager的rbac。但是\Yii::$app->user->can未返回预期值 我编写了RbacController并成功地执行了YII2中的RBAC:用户->;PHPManager中的can(),php,yii2,rbac,Php,Yii2,Rbac,我正在尝试在我的项目中使用Yii2高级应用程序版本配置带有phpmanager的rbac。但是\Yii::$app->user->can未返回预期值 我编写了RbacController并成功地执行了yii rbac/init 更新了common/components/items.php,如图所示 <?php return [ 'user' => [ 'type' => 1, 'children' => [ 'createX', ], ], '
yii rbac/init
更新了common/components/items.php,如图所示
<?php
return [
'user' => [ 'type' => 1, 'children' => [ 'createX', ], ],
'createX' => [ 'type' => 2, 'description' => 'create a X',],
'admin' => [ 'type' => 1, 'children' => [ 'updateX', ], ],
'updateX => [ 'type' => 2, 'description' => 'update a X', ],
];
assignments.php
return [ 2 => [ 'user', ], ];
我认为2对应于用户id
rules.php
return [];
common/main.php
...
'components' => [
...
'authManager' => [
'class' => 'yii\rbac\PhpManager',
'defaultRoles' => ['user','admin'],
'itemFile' => '@common/components/rbac/items.php',
'assignmentFile' => '@common/components/rbac/assignments.php',
'ruleFile' => '@common/components/rbac/rules.php'
],
],
...
当我获得该角色权限时,它会打印:
数组([createX]=>yii\rbac\Permission Object([type]=>2[name]=>createX[description]=>createX[ruleName]=>[data]=>createdAt]=>1438601819[updatedAt]=>1438601819))
所以我希望用户没有更新权限,但是在方法XController::update中
echo \Yii::$app->user->can('updateX');
// returns 1, just the same than \Yii::$app->user->can('createX') returning
请提供一些帮助第一个项目文件应该是:
<?php
return [
'user' => [ 'type' => 1, 'children' => [ 'createX', ], ],
'createX' => [ 'type' => 2, 'description' => [ 'create a X', ], ],
'admin' => [ 'type' => 1, 'children' => [ 'updateX', ], ],
'updateX' => [ 'type' => 2, 'description' => ['update a X', ], ],
];
第一个项目文件应为:
<?php
return [
'user' => [ 'type' => 1, 'children' => [ 'createX', ], ],
'createX' => [ 'type' => 2, 'description' => [ 'create a X', ], ],
'admin' => [ 'type' => 1, 'children' => [ 'updateX', ], ],
'updateX' => [ 'type' => 2, 'description' => ['update a X', ], ],
];
var_dump(\Yii::$app->authManager);