RBAC简介
RBAC是什么:
是Role—Based—Access—Control的缩写,基于角色的访问控制。
通过将权限赋给角色,再将角色赋给用户。
为什么会有RBAC:
已知传统的访问控制是将对系统的各种操作权限直接赋给用户,这种情况可以适用于团队不大的情况,但是随着团队的扩张,系统的功能的丰富,对权限管理的操作会越来越复杂。
举个例子,我们项目团队原来只有5个人,那这5个人的访问控制直接由后台操作即可。随着人数增加,我们在后台增加了权限管理,创建用户的时候直接赋予权限。但是,当我们团队扩张到15人之后,对权限控制开始出现麻烦了,第一种情况,每次有新人来的时候需要去修改新增权限;第二种情况,每次后台有新增的功能,需要对相关的用户进行添加。有时候看得管理员眼花缭乱,于是基于角色的权限控制诞生了。
使用这种方式有什么好处?
1.扩展性
在团队中,有多个人拥有同一种权限的时候,不必重复添加,只需要将这种权限赋给角色即可,减少重复工作。
2.提高调整效率
使用传统方式调整,可能会漏掉或者错给权限,基于角色,只需要确定每一种角色的权限即可,每次更改用户的角色就可以实现职位对接。
RBAC模型的分类
(1)RBAC0
基础的用户、角色、权限模型。
两种情况:
多对一:一个用户只充当一个角色,一个角色可以赋给多个用户
多对多:一个用户可以拥有多个角色,一个角色可以赋给多个用户
适用场景:系统功能较单一、适用人员不多、兼岗情况较少,权限较为清晰。
(2)RBAC1
引入继承概念,角色下面有子角色,权限下面有子权限;
子角色的权限不可高于父角色。
适用场景:责权体系呈树状,如:销售总监——销售主管——销售经理——销售人员。
(3)RBAC2
基于RBAC0的模式,增加了角色互斥、先决条件角色、基数约束、运行时互斥等。
角色互斥:一个用户不能分配到一组互斥的角色中的多个角色。
先决条件角色:想要获得更高权限的角色,必须先获取这个级别下一级的角色。
基数约束:一个角色可以被分配的用户数量有限。
运行时互斥:一个用户拥有多个角色,但是在运行时,不可以同时使用这两种角色的权限。
(4)RBAC3
统一模型,综合了RBAC0、RBAC1、RBAC2.
案例:
本次我做的是一个RBAC0模型的权限管理,用于管理系统后台的权限分配问题。
第一步,设想基本流程。
第二步,开始作图
项目结构图:
角色管理:
创建角色:
在看了后台的功能后,改变了权限分配的展现方式(因为是真实后台,所以只展示一部分):
查看人员:
用户管理:
新增管理员:
编辑:
修改密码:
收工!