redis - Yii2 RBAC Redis - 怎么了?

标签 redis yii2 yii2-advanced-app rbac yii2-rbac

我正在尝试在我的 Yii2 高级应用程序(sweelix/yii2-redis-rbacyiisoft/yii2-redis 中使用 RBAC已安装)。

  1. common/main.php:

    //....
    'components' => [
        'authManager' => [
            'class' => 'sweelix\rbac\redis\Manager',
            'db' => 'redis',
        ],
        // ...
    ],
    
  2. common/main-local.php:

    //....
    'components' => [
        'authManager' => [
            'class' => 'yii\redis\Connection',
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 1,
        ],
        // ...
    ],
    
  3. 让我们尝试初始化 (RbacController):

    public function actionInit()
    {
        $auth->removeAll();
        $user = $auth->createRole('user');
        $auth->add($user);
    
        $admin = $auth->createRole('admin');
        $auth->add($admin);
    
        $auth->addChild($admin, $user);
        $auth->assign($admin, 1); // 1 - is id of admin user on database }
    

php yii rbac/init 返回:

Error: Redis error: ERR wrong number of arguments for 'hget' command. Redis command was: HGET auth:mappings:rules 

对象转储:

    $user = $auth->createRole('user');
    var_dump($user);die;

返回:

    object(yii\rbac\Role)#21 (7) {
      ["type"]=> int(1)
      ["name"]=> string(4) "user"
      ["description"]=> NULL
      ["ruleName"]=> NULL
      ["data"]=> NULL
      ["createdAt"]=> NULL
      ["updatedAt"]=> NULL
    }

sweelix\rbac\redisManager364 行: 如果 $item->ruleName 为 null 我们有错误...

$ruleGuid = $this->db->executeCommand('HGET', [$this->getRuleMappingKey(), $item->ruleName]);

版本:

Redis 服务器 v=3.2.6, "yiisoft/yii2": "~2.0.14", yiisoft/yii2-redis 2.0.8, PHP 7.0.33

最佳答案

我在其他应用程序和环境中检查过它,发现它适用于版本 "yiisoft/yii2-redis": "2.0.8""yiisoft/yii2-redis": "2.0.9" 它给出一个错误(sweelix\rbac\redisManager364 行: $ruleGuid = $this->db->e​​xecuteCommand('HGET', [$this->getRuleMappingKey(), $item->ruleName]);). 如果您强行切换到包的“2.0.8”版本,错误就会消失。

关于redis - Yii2 RBAC Redis - 怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868945/

相关文章:

Redis建模

ruby-on-rails - 在使用 Resque-scheduler 和 redis 时提到的延迟时间过去后,延迟作业未进入主作业队列

yii2 - 创建具有 2 个模型的动态 SideNav Widget

yii2:当我使用 renderPartial 方法加载页面时, Assets 包不加载 Assets

php - Yii2:如何在不同的数据库表中登录前端和后端?

yii2-advanced-app - 如何在 kartik 详细 View yii2 中隐藏删除图标?

ruby-on-rails - Redis 如何管理未使用的缓存键?

c# - 如何使用service.stack.redis从管道获取结果

javascript - 如何在 YII2 中使用 PJAX 处理来自 Controller 的错误?

php - Yii2:用 Sweet alert 替换 Gridview 使用的默认确认消息