-1

我在此站点页面之后安装 yii2-rbac:https ://github.com/dektrium/yii2-rbac/blob/master/docs/installation.md 。我做第二次。我第一次这样做,但我在 config/web.php 文件中写道:

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

我不知道,'rbac' => 'dektrium\rbac\RbacConsoleModule' 它必须写在console.php(而不是web.php)中。

'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ],

` 我在两个配置文件中都写过这段代码:web.php 和 console.php,但是在 web.php 中我写了 'rbac' => 'dektrium\rbac\RbacConsoleModule' 而在 console.php 中我没有写,但一切正常:yii2-rbac 已安装成功。并且所有交易都成功了。但是 web.php 中的 'rbac' => 'dektrium\rbac\RbacConsoleModule' 在我看来是错误的。它不是 web 模块,它是控制台模块。然后我回滚了事务(迁移/向下),并通过从 composer.json "dektrium/yii2-rbac": "1.0.0-alpha@dev" 声明中删除来完全删除了 rbac。已全部删除。比我第二次开始安装 rbac。在作曲家安装后,我在 web.php 中写道:

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    'rbac' => 'dektrium\rbac\RbacWebModule',
    //'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

在console.php中我写道:

'modules' => [

    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

yii2上的网站在它之后就不能工作了!!!我在 web.php “...RbacConsoleModule”中进行了更改。现场工作。为什么它不适用于 RbacWebModule?然后我尝试应用我之前回滚过的事务,但引发错误:您有错误的 authManager 配置 在此处输入图像描述

我能做些什么?帮我。为我的英语祈祷。我来自俄罗斯。

我的控制台.php:

$config = [
'id' => 'basic-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'app\commands',
'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
    'log' => [
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['error', 'warning'],
            ],
        ],
    ],
    'db' => $db,

    'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ]
],

'modules' => [

    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

//....

我的 web.php:

    //This all in $component

    'db' => require(__DIR__ . '/db.php'),


    'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ],

],

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],
4

1 回答 1

1

就这些!问题已经解决了。它必须将 authManager 部分写入模块,而不是组件:

'modules' => [
   'user' => [
      'class' => 'dektrium\user\Module',
    ],

    'authManager'  => [
      'class'        => 'yii\rbac\DbManager',
    //'defaultRoles' => ['guest'],
    ]

    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

 ]
于 2017-10-17T04:44:38.300 回答