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