【发布时间】:2016-08-16 15:23:12
【问题描述】:
我想在前端和后端分别实现 rbac。 我在后端有一个管理员表,管理员用户使用这个表。也是普通用户的表格,他们使用此表格(用于登录、注册等)。
在 rbac 相关表 (auth_assignment) 中,“user_id”字段必须从另一个表(user 或 admin)中获取值,并且无法从 admin 和 users 表中获取值。
是否可以分别为前端和后端实现 rbac? 如果是怎么办?
【问题讨论】:
我想在前端和后端分别实现 rbac。 我在后端有一个管理员表,管理员用户使用这个表。也是普通用户的表格,他们使用此表格(用于登录、注册等)。
在 rbac 相关表 (auth_assignment) 中,“user_id”字段必须从另一个表(user 或 admin)中获取值,并且无法从 admin 和 users 表中获取值。
是否可以分别为前端和后端实现 rbac? 如果是怎么办?
【问题讨论】:
这是可能的。可以配置 RBAC DbManager 表,以便您可以准备两个 RBAC 组件,一个用于前端,另一个用于后端,具有不同的表。
这是赋值的属性:
public $assignmentTable = '{{%auth_assignment}}';
【讨论】:
yii\rbac\DbManager - \vendor\yiisoft\yii2\rbac\DbManager.php
查看此链接。它对 RBAC 非常有用。
https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md
RBAC 组件基于通用部分..通常如果它们基于 DB,您可以使用通用模型并共享相关的 db 表..
您可以在 cofig 区域的 main.php 的组件部分中声明此元素,如果您在公共目录中执行此操作,此组件将在两个环境(前端、后端)之间正确共享。
例如:common/config/main.php
'components' => [
.....
'authManager' => [
'class' => 'yii\rbac\DbManager',
'cache' => 'cache',
....
],
这意味着它们可以自然地在前端和后端之间共享..
【讨论】:
user 表进行 RBAC 分配。