RBAC在现在的系统中依然是常用权限控制,有必要掌握
转载请注明出处:https://janrs.com
什么是RBAC
RBAC。英文名称Role-Based Access Control。顾名思义,就是基于角色的权限控制系统。理解的基本思路就是,在角色的前提下,按照角色不同将权限分配到对应的角色,再将管理员设置成对应的角色,进而管理员获得权限。在管理员请求某个业务权限的时候,从数据库中查询该管理员所拥有的权限,并将请求的业务权限跟数据库比对。以此进行权限控制
实现思路
RBAC通常是通过数据库来实现的。也就是说将权限的数据保存在数据库中,然后在请求时拿出来进行比对
在设计RBAC的时候有以下几张权限表:
admin
管理员表
role
管理员表就是用来保存该系统中需要有的管理员。比如用户管理员、财务管理员、运维人员等等
role
角色表
role
角色表就是用来保存该系统中需要用到的角色。比如用户管理角色、财务管理角色、运维角色
permission
权限表
permission
权限表就是用来保存整套系统中表示权限请求的入口。在常见的开发中就是API接口或者URI地址。就是用来保存整套系统中对外暴露业务操作的接口
role_permission
角色权限关联表
role_permission
角色关联表就是用来保存各个不同角色所拥有的权限
role_admin
角色管理员关联表
role_admin
角色管理员关联表就是用来保存管理员所属哪个角色的
menu
菜单表
menu
这个菜单表其实从RBAC的角度出发,并不需要这个表。这个表只是从业务的层面的来表示的,并不是真正意义上权限的逻辑控制。很多时候很多开发人员把menu
表等同于role
表,从RBAC的角度来理解其实并不正确
表结构
admin
管理员表结构
#code start
CREATE TABLE `backend_admin` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`username` varchar(255) DEFAULT '' COMMENT '用户名',
`password` varchar(255) DEFAULT '' COMMENT '密码',
`register_time` int(11) DEFAULT '0' COMMENT '注册时间',
`update_time` int(11) DEFAULT '0' COMMENT '更新时间',
`status` tinyint(1) DEFAULT