【问题标题】:create rule class in dektrium module rbac in basic project yii2在基本项目 yii2 的 dektrium 模块 rbac 中创建规则类
【发布时间】:2019-10-06 07:29:33
【问题描述】:

我安装了 dektrium\user 和 dektrium\rbac\ 模块来管理用户和访问控制。完全安装了相关的表和文件,我可以在 /user/admin 路径中看到几个选项卡(用户、角色、权限、规则、创建)使用模块。我可以完美地管理用户(创建用户,重置密码,编辑,..)。购买我无法创建规则。 我在 app\rbac\rules 文件夹中创建了一个名为 AuthorRule 的类:

<?php 
namespace app\rbac\rules;

use yii\rbac\Rule;
use app\models\News;

/**
 * Checks if authorID matches user passed via params
 */
class AuthorRule extends Rule
{
    public $name = 'isAuthor';

    /**
     * @param string|int $user the user ID.
     * @param Item $item the role or permission that this rule is associated with
     * @param array $params parameters passed to ManagerInterface::checkAccess().
     * @return bool a value indicating whether the rule permits the role or permission it is associated with.
     */
    public function execute($user, $item, $params)
    {
        return isset($params['news']) ? $params['news']->createdBy == $user : false;
    }
}

(我用模型、控制器、视图创建了新闻类) 但是当我在我的模块中输入名称和类规则时。既不记录数据,也不记录错误消息。在我进入规则之前,我无法添加其余部分。

【问题讨论】:

  • 它是否保存带有上述详细信息的规则?如果是,则您需要通过创建新权限并在表单中选择上述创建的规则来将规则分配给用户。看看创建新的许可表,你就会明白
  • 要了解完整的过程,请参阅post 上的答案,其中该过程是手动完成的,无需使用上述表格
  • 我知道我应该分配,但我必须制定一个我不能做的规则。它不保存规则。
  • 它会抛出什么错误?
  • 我无法创建任何规则,也没有任何消息在查看。当我单击“保存”按钮时,我有第二张图片。我搜索了很多。但我找不到解决方案 muhammad 如果你愿意,你能帮我吗?请给我发邮件:masoudy.maryam@gmail.com。谢谢你指导我

标签: yii2 rules rbac


【解决方案1】:

我当然希望 OP 现在已经解决了他们的问题,但其他人可能会遇到它。

首先说明:如上所述,Save 会静默失败。这是因为表单是使用 Ajax (XHR) 提交的。该错误可以在浏览器控制台中看到。

这是错误信息的相关部分:

preg_match():编译失败:偏移量 8 处的字符类范围无效

由于 Yii 2 的架构,实际的正则表达式有点难找。它在 yii2-rbac vendor/dektrium/yii2-rbac/models/Rule.php 的规则模型中,第 86 行。

原来的正则表达式是/^[\w][\w-.:]+[\w]$/

PHP 7.3 使用 PCRE2 库而不是原来的 PCRE,上面的模式是错误的。破折号 (-) 需要转义。

现在整行应该是:

['name', 'match', 'pattern' => '/^[\w][\w\-.:]+[\w]$/'],

由于yii2-rbac包被废弃,你可以修改文件。一个更强大的解决方案是覆盖该类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多