Как я могу реализовать yii2-rbac в отдельном интерфейсе и бэкэнде?

Я хочу реализовать rbac во внешнем и внутреннем интерфейсе отдельно. У меня есть таблица для администраторов в бэкэнде, и пользователи-администраторы работают с этой таблицей. Также таблица для обычных пользователей и они работают с этой таблицей (для входа, регистрации и т.д.).

В таблице, связанной с rbac (auth_assignment), значение поля user_id должно быть получено из другой таблицы (пользовательской или административной), и невозможно получить значение как из таблицы администратора, так и из таблицы пользователей.

Можно ли реализовать rbac для внешнего и внутреннего интерфейса отдельно? если да то как?


person mojtaba.sln    schedule 16.08.2016    source источник


Ответы (2)


Это возможно. Таблицы RBAC DbManager можно настроить таким образом, чтобы вы могли подготовить два компонента RBAC, один для внешнего интерфейса, а второй для внутреннего, с разными таблицами.

Это атрибут для назначения:

public $assignmentTable = '{{%auth_assignment}}';
person Bizley    schedule 16.08.2016
comment
спасибо за ответ.но где этот атрибут?в каком файле? - person mojtaba.sln; 16.08.2016
comment
Пространство имен yii\rbac\DbManager - \vendor\yiisoft\yii2\rbac\DbManager.php - person Bizley; 16.08.2016

Проверьте эту ссылку. Это очень полезно для RBAC.

https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md

Компонент RBAC основан на общей части. Обычно, если они основаны на БД, вы используете общие модели и совместно используете связанную таблицу БД.

Вы можете объявить этот элемент в разделе компонентов main.php в области конфигурации, и если вы сделаете это в общем каталоге, этот компонент будет правильно разделен между обеими средами (интерфейс, бэкэнд).

например: общий/config/main.php

 'components' => [
    .....
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
        'cache' => 'cache',
          ....
    ],

это означает, что они могут быть естественным образом разделены между интерфейсом и сервером.

person vijay nathji    schedule 16.08.2016
comment
В этом случае конфигурация не может использоваться совместно, поскольку она должна использовать две разные таблицы user для назначения RBAC. - person Bizley; 16.08.2016