【问题标题】:Error Rule not found on RBAC DbManager Yii2在 RBAC DbManager Yii2 上找不到错误规则
【发布时间】:2015-03-10 09:53:56
【问题描述】:

我按照本指南 (http://www.yiiframework.com/doc-2.0/guide-security-authorization.html) 操作,但仍然出现错误。

我已经创建了 auth_item、auth_item_chid、auth_assignment 和 auth_rule 表

当我将此行添加到我的控制器时

if (\Yii::$app->user->can('createPost')) {   //mycode ... }

我收到错误 -> 找不到规则:作者

protected function executeRule($user, $item, $params)
{
    if ($item->ruleName === null) {
        return true;
    }
    $rule = $this->getRule($item->ruleName);
    if ($rule instanceof Rule) {
        return $rule->execute($user, $item, $params);
    } else {
        throw new InvalidConfigException("Rule not found: {$item->ruleName}");
    }
}

我已经在 auth_item 表中为用户分配了一个角色,auth_item 已经有 auth_item_chid。 在 Yii2 上,所有 auth_item 都应该设置为 rule_name。这和以前的版本不同。

【问题讨论】:

  • 能否展示一下您的表格的相关内容?我想这就是问题所在。您在 auth_rule 中有条目吗?
  • 我看了这个视频youtube.com/watch?v=eFOIUeU-Y74,我在视频评论块上使用了查询
  • 奇怪的是,您检查了“createPost”,但没有找到“作者”。请提供您的表格的相关行。
  • 我第二,你可能在表格中遗漏了一些东西
  • 添加 auth_item 时出现此错误。 SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(yii2advanced.auth_item,CONSTRAINT auth_item_ibfk_1 FOREIGN KEY (rule_name) REFERENCES auth_rule (@987654330 @) ON DELETE SET NULL ON UPDATE CASCADE) 正在执行的 SQL 是:INSERT INTO auth_item (name, type, description, rule_name, data, created_at, updated_at)值('网站管理员',1,'','','',NULL,NULL)

标签: yii2 rbac


【解决方案1】:

您可以扩展 DbManager 以修复错误

<?php
namespace app\components;

use yii\base\InvalidConfigException;
use yii\rbac\Rule;

class DbManager extends \yii\rbac\DbManager
{
    protected function executeRule($user, $item, $params)
    {
        if (empty($item->ruleName)) {
            return true;
        }

         return parent::executeRule($user, $item, $params);
    }
}

并更改 config/web.php 之类的

    'authManager' => [
        'class' => 'app\components\DbManager'
    ],

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2021-07-19
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多