0

我正在使用Yii2基本模板并致力于auth_manager.

我在下面的链接中读到了这个:

Yii2 授权

我也检查了这个

我们如何在 Yii2 RBAC 中使用 auth_rule 表?

现在我知道了这些事情:

  1. 如何分配用户角色。

  2. 如何为任何角色分配权限。

  3. 我已经了解3 tables. 即和。auth_assignment_auth_itemauth_item_child

现在我没有得到auth_rule表的用法。

表中有 4 列

name

data

created_at

updated_at

现在我很好奇

  1. 我应该在这些列中存储什么?

  2. 我以后如何使用这些数据?

我的意思是很容易理解只有两列,即和created_atupdated_at中的内容。namedata

我无法通过网络找到任何关于它的信息。因此,如果有人知道这一点,那对我和那些也在寻找同样东西的人来说将非常有帮助。

谢谢你

4

2 回答 2

1

我建议阅读:http ://www.yiiframework.com/doc-2.0/guide-security-authorization.html#using-rules

您(可能)不想手动将数据添加到此表中。该name字段将包含规则的名称,这也是auth_item表中的外键。该data列将包含实际上是规则的类的序列化版本。

因此,在文档的示例中,有一个 AuthorRule:

namespace app\rbac;

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

class AuthorRule extends Rule
{
    public $name = 'isAuthor';

    public function execute($user, $item, $params)
    {
        return isset($params['post']) ? $params['post']->createdBy == $user : false;
    }
}

auth 项和规则使用 authManager 组件连接:

$auth = Yii::$app->authManager;

// add the rule
$rule = new \app\rbac\AuthorRule;
$auth->add($rule);

// add the "updateOwnPost" permission and associate the rule with it.
$updateOwnPost = $auth->createPermission('updateOwnPost');
$updateOwnPost->description = 'Update own post';
$updateOwnPost->ruleName = $rule->name;
$auth->add($updateOwnPost);

// "updateOwnPost" will be used from "updatePost"
$auth->addChild($updateOwnPost, $updatePost);

// allow "author" to update their own posts
$auth->addChild($author, $updateOwnPost);

使用 DbManager 时,表中的数据会自动填充正确的值。

于 2018-03-09T08:39:08.497 回答
0

它是存储对身份验证规则类的引用的地方。http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#using-rules

有 2 个示例PhpManagerDbManager如果您将配置从 更改为PHPDB它将如下所示。

return [
    // ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            // uncomment if you want to cache RBAC items hierarchy
            // 'cache' => 'cache',
        ],
        // ...
    ],
];

DbManager使用四个数据库表来存储其数据:

  • itemTable:存储授权项的表。默认为“auth_item”。
  • itemChildTable:用于存储授权项目层次结构的表。默认为“auth_item_child”。
  • assignmentTable:用于存储授权项目分配的表。默认为“auth_assignment”。
  • ruleTable:存储规则的表。默认为“auth_rule”。

您无需在此处存储任何内容,而是不直接使用它。它在使用您用于 的相同方法期间填充PHP manager

于 2018-03-09T08:39:54.377 回答