权限在日常办公系统中算是一个比较常见的基本功能,对于存在有权限模块的系统中规定了登录用户能够操作哪些资源,不能够操作哪些资源。借助权限模块可以有效的控制参与到系统不同身份人员要具体做的操作,可以说一个成熟的后端系统离不开一个比较完善的权限管理系统。
什么是RBAC?
RBAC权限管理系统是一个根据用户的角色级别来控制用户的访问级别,使不同的用户只能访问当前角色级别下的功能。
什么是RBAC中的角色?
在RBAC框架中,角色是用于在新增用户时直接通过角色来分配用户的访问权限。
什么是RBAC中的权限?
权限(permission)时在RBAC(权限管理系统)中根据不同的角色分配不同的访问权限,控制该角色哪些功能可以操作那些不能操作,用户只能通过角色访问特定的功能。
权限管理的方式
RBAC的组成
在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限,它们之间的关系如下图所示
- User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
- Role(角色):不同角色具有不同的权限
- Permission(权限):访问权限
- 用户-角色映射:用户和角色之间的映射关系
- 角色-权限映射:角色和权限之间的映射
例如下图,管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作。
实体对应关系
用户-角色-资源实体间对应关系图分析如下
这里用户与角色实体对应关系为多对多,角色与资源对应关系同样为多对多关系,所以在实体设计上用户与角色间增加用户角色实体,将多对多的对应关系拆分为一对多,同理,角色与资源多对多对应关系拆分出中间实体对象权限实体。
表结构设计
从上面实体对应关系分析,权限表设计分为以下基本的五张表结构:用户表(t_user),角色表(t_role),t_user_role(用户角色表),资源表(t_module),权限表(t_permission),表结构关系如下:
模块划分
从表结构设计可以看出:这里有三张主表(t_user,t_role,t_module),功能实现上这里划分为三大模块:
用户管理
- 用户基本信息维护
- 用户角色分配
角色管理
- 角色基本信息维护
- 角色授权(给角色分配能够操作的菜单)
- 角色认证(给角色拥有的权限进行校验)
资源管理
- 资源信息维护
- 菜单输出动态控制