在 Yii2 高级版中,使用 RBAC(基于角色的访问控制)来管理权限。RBAC 的核心思想是将权限授予角色,然后将角色授予用户。用户通过拥有角色权限来获得相应的权限。 在 Yii2 中,使用 RBAC 权限管理需要创建以下两个数据库表: ### 1. auth_item 表 auth_item 表用于存储权限项。权限项可以是角色或权限。 auth_item 表的字段定义如下: - name:权限项的名称,必须是唯一的。 - type:权限项的类型,可以是 1(角色)或 2(权限)。 - description:权限项的描述。 - rule_name:规则名称。 - data:权限项的数据。 - created_at:创建时间。 - updated_at:更新时间。 ### 2. auth_assignment 表 auth_assignment 表用于存储用户和角色之间的关系。 auth_assignment 表的字段定义如下: - item_name:角色名称。 - user_id:用户 ID。 - created_at:创建时间。 以上两个表是 RBAC 权限管理的核心所在。当用户访问某个资源时,Yii2 会根据用户的角色来检查用户是否有访问该资源的权限。 另外,在 Yii2 中还可以使用 auth_item_child 表来实现权限继承。auth_item_child 表用于存储权限项之间的父子关系。例如,如果某个角色包含了另一个角色的所有权限,那么可以将这两个角色之间建立父子关系,以便于管理角色和权限之间的关系。 auth_item_child 表的字段定义如下: - parent:父级权限项名称。 - child:子级权限项名称。 总的来说,Yii2 中的 RBAC 表设计如下: ###1. auth_item 表: | 字段名 | 类型| 说明 | | ------------- | ------------- | ------------- | |name|string(64) |权限项的名称,必须是唯一的。| |type|int|权限项的类型,可以是 1(角色)或 2(权限)。| |description|text|权限项的描述。| |rule_name|string(64)|规则名称。| |data |binary|权限项的数据。| |created_at |int| 创建时间。| |updated_at |int| 更新时间。| ### 2. auth_assignment 表: |字段名|类型|说明| | ------------- | ------------- | ------------- | |item_name| string(64)| 角色名称。| |user_id| string(64)| 用户 ID。| |created_at| int| 创建时间。| ### 3. auth_item_child 表: |字段名 |类型 |说明| | ------------- | ------------- | ------------- | |parent| string(64) |父级权限项名称。| |child |string(64) |子级权限项名称。| 以上是 Yii2 中 RBAC 表的设计,可以根据需要进行调整和扩展。