RBAC数据表设计
三表:用户表、角色表、权限表,用户表基本一开始就存在
用户表中有一个字段必须为:role_id与角色表进行关联
角色表
表名:role
序号 | 字段 | 类型 | 说明 | 空 | 默认值 | 主键 |
---|---|---|---|---|---|---|
1 | id | int | 自增主键 | N | N/A | 是 |
2 | role_name | varchar(20) | 角色名称,如:超级管理员 | N | ||
3 | auth_ids | text | 权限表主键id集合,如:1,2,3 | Y | ||
auth_ac | text | 权限对应的控制器方法集合,如:indexController@index | Y |
auth_ac: a表示action,c表示Controller
权限表
表名:auth
序号 | 字段 | 类型 | 说明 | 空 | 默认 | 主键 |
---|---|---|---|---|---|---|
1 | id | int | 自增主键 | N | N/A | 是 |
2 | auth_name | varchar(20) | 权限名称 | N | ||
3 | controller | varchar(40) | 不带后缀的权限对应的控制器文件名 | Y | ||
4 | action | varchar(30) | 权限对应的方法名称 | Y | ||
5 | pid | tinyint | 父级权限id(2级权限),0表示顶级权限 | N | 0 | |
6 | is_nav | enum([1,2]) | 是否作为菜单显示,1=是,2=否 | N | 1 |
-
创建迁移文件
php artisan make:migration create_role_table php artisan make:migration create_auth_table
三表之间的关系
用户表-角色表:
用户表.role_id = 角色表.id
角色表与权限表:
角色表.auth_ids可以有多个权限表.id
注意:
用户表与权限没有直接的关系,这里只有通过角色进行赋予权限,然后根据用户的角色进行权限判断