模块内的 RBAC

RBAC within Modules

我有一个现有的 Yii2 基本系统,它运行 Oracle 数据库并通过 Yii2Admin 内置了 RBAC。效果很好。

我现在需要另外使用另一个数据库 (MS-SQL Server 2008)。

所以我设置了一个使用第二个 Yii::$app->db2 link 的新模块,一切正常。

我的问题是,对于我的第二个 MS-SQL Server 2008 DB 的用户,是否可以在这个 linked 到 MS-SQL Server 2008 数据库而不是现有的 Oracle 数据库。

或者我必须使用 Oracle?

尝试以下配置。 将 MS-SQL Server 2008 连接设置为 db1 名称 示例:

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

并为 db1 值覆盖 ActiveRecord 模型中的函数 getDB()。这将从 MS-SQL Server 2008.

查询数据

文档:http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html#getDb()-detail

注意:您必须通过扩展 class 或其他工作来自定义 Yii2Admin。

是的,我认为这是可能的您可以覆盖并为您的 MSSQL 服务器创建一个单独的 RBAC 管理器

RBAC DB Manager you can see property db

在您的配置文件中:

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

然后您可以使用 Yii::$app->authManager2 对象 build your authorization 数据

希望对您有所帮助。