RBAC внутри модулей

#module #yii2 #rbac

#модуль #yii2 #rbac

Вопрос:

У меня есть существующая базовая система Yii2, которая работает от Oracle DB и имеет встроенный RBAC через Yii2Admin. Он отлично работает.

Теперь мне нужно дополнительно использовать другую базу данных (MS-SQL Server 2008).

Итак, я настроил новый модуль, который использует вторую ссылку Yii :: $ app-> db2, и все это работает нормально.

Мой вопрос заключается в том, что для пользователей моей второй базы данных MS-SQL Server 2008 возможно ли иметь logins RBAC в этом модуле, который связан с базой данных MS-SQL Server 2008, а не с существующей базой данных Oracle.

Или мне придется использовать Oracle?

Ответ №1:

Да, я думаю, возможно, вы можете переопределить и создать отдельный менеджер RBAC для вашего сервера MSSQL

В диспетчере базы данных RBAC вы можете увидеть свойство db

в вашем конфигурационном файле:

 return [
      // ...
      'components' => [
        'authManager2' => [ // <!-- Auth Manager 2
            'class' => 'yiirbacDbManager',
            'db' => 'db2' // <-- Here is the magic change db instance
      ],
      // ...
],
  

И затем вы можете создать свои данные авторизации с помощью Yii::$app->authManager2 object

Надеюсь, это вам поможет.

Ответ №2:

Попробуйте следующую конфигурацию. Сначала установите соединение MS-SQL Server 2008 в качестве примера имени db1:

 'db1' => [
        'class' => 'yiidbConnection',
        'dsn' => 'Your MS-SQL Server 2008  DNS',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
  

и переопределите функцию getDb() в модели ActiveRecord для значения db1. Это будет запрашивать данные из MS-SQL Server 2008.

Документ: http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html#getDb ()-деталь

Примечание: вы должны настроить Yii2Admin с помощью расширенного класса или чего-то еще для работы.

Комментарии:

1. У меня уже есть оба подключения к БД, которые работают нормально. Note: You must custom Yii2Admin by extend class or something for work. на самом деле это не ответ на мой вопрос

2. Являетесь ли вы пользовательским модулем yii2admin? Вы используете пользовательскую функцию getDb для всей модели модуля