Использование Yii2 auth_rule (Yii2 RBAC)

Я работаю с Yii2 базовыми шаблонами и работаю над auth_manager.

Я читал об этом по ссылке ниже:

Авторизация Yii2

и это я тоже проверил

Как мы можем использовать таблицу auth_rule в Yii2 RBAC ?

И теперь я знаю эти вещи:

  1. как назначить роли пользователей.

  2. как назначить разрешение на любую роль.

  3. я понимаю использование 3 tables . то есть auth_assignment , auth_item и auth_item_child .

Теперь я не получаю использование таблицы auth_rule.

в таблице 4 столбца

name

data

created_at

updated_at

теперь мне интересно

  1. что мне нужно хранить в этих столбцах?

  2. что, как я могу использовать эти данные позже?

Я имею в виду, что легко понять только два столбца, то есть created_at и updated_at, но что происходит в столбцах name и data.

Я не смог найти ничего об этом в Интернете. поэтому, если кто-то знает об этом, это будет очень полезно для меня и для тех, кто ищет то же самое.

Благодарю вас


person Fahad Ali    schedule 09.03.2018    source источник


Ответы (2)


Я рекомендую прочитать это: 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;
    }
}

Элементы и правила авторизации подключаются с помощью компонента 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 данные в таблицах автоматически заполняются правильными значениями.

person Jap Mul    schedule 09.03.2018

Здесь хранятся ссылки на классы правил аутентификации. http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#using-rules

Есть 2 примера PhpManager и DbManager, если вы измените конфигурацию с PHP на DB, она будет выглядеть так, как показано ниже.

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.

person Muhammad Omer Aslam    schedule 09.03.2018