Php yii2 rbac authmanager getRoles()返回空

Php yii2 rbac authmanager getRoles()返回空,php,yii2,rbac,Php,Yii2,Rbac,我正在使用yii2实现rbac。但是当我尝试获取我之前创建的角色时,我得到了一个空变量:$authorRole=$auth->getRole('admin'); rule类,我在其中放置实际的规则逻辑 yii/console/controller/UserGroupRule.php 现在定义角色 yii/console/controller/RbacController.php namespace console\controllers; use Yii; use yii\console\C

我正在使用yii2实现rbac。但是当我尝试获取我之前创建的角色时,我得到了一个空变量:
$authorRole=$auth->getRole('admin');

rule类,我在其中放置实际的规则逻辑

yii/console/controller/UserGroupRule.php

现在定义角色

yii/console/controller/RbacController.php
namespace console\controllers;

use Yii;
use yii\console\Controller;

class RbacController extends Controller
{
    public function actionInit()
    {
        $auth = Yii::$app->authManager;

        $rule = new \app\rbac\UserGroupRule;
        $auth->add($rule);

        $admin = $auth->createRole('admin');
        $admin->ruleName = $rule->name;
        $auth->add($admin);

    }
}
在此之后,我可以运行./yii rbac/init生成规则文件:

  • console/rbac/items.php
  • console/rbac/rules.php
这与文档基本相同

yii/commom/config/main.php

但是在

前端\模型\注册表单::注册()

尝试获取管理员角色时,我得到一个空结果:

public function signup()
{
    if ($this->validate()) {
        $user = new User();
        $user->username = $this->username;
        $user->email = $this->email;
        $user->setPassword($this->password);
        $user->generateAuthKey();
        $user->save(false);

        $auth = Yii::$app->authManager;
        $authorRole = $auth->getRole('admin');
        $auth->assign($authorRole, $user->getId());

        return $user;
    }

    return null;
}
下面是$auth的值:

yii\rbac\PhpManager#1
(
    [itemFile] => '/advanced/frontend/rbac/items.php'
    [assignmentFile] => '/advanced/frontend/rbac/assignments.php'
    [ruleFile] => '/advanced/frontend/rbac/rules.php'
    [*:items] => []
    [*:children] => []
    [*:assignments] => []
    [*:rules] => []
    [defaultRoles] => [
        0 => 'admin'
        1 => 'author'
        2 => 'admin'
        3 => 'author'
    ]
    [yii\base\Component:_events] => []
    [yii\base\Component:_behaviors] => null
)

这可能是因为您在“console/rbac/items.php”中生成了rbac,并且 console/rbac/rules.php“但您的rbac PhpManager正在advanced/frontend中查找此文件

您可以移动此文件或设置正确的路径

'authManager' => [
    'class' => 'yii\rbac\PhpManager',
    'itemFile' => '@common/rbac/items.php',
    'assignmentFile' => '@common/rbac/assignments.php',
    'ruleFile' => '@common/rbac/rules.php',
    'defaultRoles' => ['admin', 'author'], // your define roles
],  
“@common”是yii2别名此处列出的所有可用别名:


这应该会有帮助,让我知道是否仍然会有问题,这可能是因为您在“console/rbac/items.php”中生成了rbac,并且 console/rbac/rules.php“但您的rbac PhpManager正在advanced/frontend中查找此文件

您可以移动此文件或设置正确的路径

'authManager' => [
    'class' => 'yii\rbac\PhpManager',
    'itemFile' => '@common/rbac/items.php',
    'assignmentFile' => '@common/rbac/assignments.php',
    'ruleFile' => '@common/rbac/rules.php',
    'defaultRoles' => ['admin', 'author'], // your define roles
],  
“@common”是yii2别名此处列出的所有可用别名:

这应该会有帮助,让我知道是否还有问题

'authManager' => [
    'class' => 'yii\rbac\PhpManager',
    'itemFile' => '@common/rbac/items.php',
    'assignmentFile' => '@common/rbac/assignments.php',
    'ruleFile' => '@common/rbac/rules.php',
    'defaultRoles' => ['admin', 'author'], // your define roles
],