Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
YII2中的RBAC:用户->;PHPManager中的can()_Php_Yii2_Rbac - Fatal编程技术网

YII2中的RBAC:用户->;PHPManager中的can()

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', ], ], '

我正在尝试在我的项目中使用Yii2高级应用程序版本配置带有phpmanager的rbac。但是\Yii::$app->user->can未返回预期值

我编写了RbacController并成功地执行了
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);