yii2 RBAC Manager + MongoD. Логика работы, объяснение
Primary tabs
Общая сведения
Документация по методам аутентификации в yii2 доступна здесь, в частности RBAC.
Общая схема работы RBAC
- Пользователям даются и роли и разрешения
- Каждой роли можно сопоставить несколько разрешений
- А к разрению (permission) и к роли можно прикрепить правило (для более детальной проверки, например в правиле можно смотреть является ли пользователь создателем сущности)
Конкретные модули
Устанавливаем mdmsoft/yii2-admin и yiisoft/yii2-mongodb:
composer require mdmsoft/yii2-admin "~2.0"
composer require --prefer-dist yiisoft/yii2-mongodb
Настройка описана здесь:
https://github.com/mdmsoft/yii2-admin/blob/master/docs/guide/configuration.md
В файле config/web.php указываем
... 'components' => [ ... 'authManager' => [ 'class' => 'yii\mongodb\rbac\MongoDbManager', ], ]
О том, как создавать роли, разрешения, правила и назначения, читайте здесь
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html.
Чтобы создать rule, создаём класс нашего rule в пространстве имён app\rbac\rules,
а сам php файл этого rule помещаем в директорию app/rbac/rules:
<?php namespace app\rbac\rules; use yii\rbac\Rule; use yii\rbac\Item; class NotOnlyRule extends Rule { public $name = 'NotOnlyRule'; /** * @param string|integer $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 boolean a value indicating whether the rule permits the role or permission it is associated with. */ public function execute($user, $item, $params) { // ...... return $result; } }
При создании правила требуется использовать полный путь в пространстве имён.
Логика связи пользователя и правила (user - permission -- rule)
Чтобы правило работало, к пользователю прикрепить разрешение (permission), а уже к разрешению прикрепить правило.
- Log in to post comments
- 4383 reads
vedro-compota
Tue, 04/18/2017 - 17:30
Permalink
просьба дополнить миграциями.
просьба дополнить миграциями...если они нужны.
_____________
матфак вгу и остальная классика =)