前言
关于权限(数据 操作)的设计比较复杂, 应按各业务场景分析设计
以下讨论的是通用的部分原则
1. 什么是RBAC
RBAC目前使用最为广泛的权限模型
RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念,取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限,从而达到用户和权限解耦的目的。
**用户 -> 角色 -> 权限**
RBAC权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。
即将权限问题转换为Who、What、How的问题,需要定义的是角色、资源和行为。
需要考虑:
系统有哪些用户,可以分为哪些角色;
系统有哪些功能(资源)需要按权限来划分;
功能(资源)的拆分粒度,到页面还是到具体按钮操作;
新用户的默认角色和权限;
用户与角色是“多对一”还是“多对多”;
新增的功能是默认全部角色“可用”还是“不可用”;
…
这些都是比较细节的问题
系统扩展时,还有用户组 ,角色组,权限组等
优点
1. 职能划分更谨慎。对于角色的权限调整不仅仅只影响单个用户,而是会影响关联此角色的所有用户,管理员下发/回收权限会更为谨慎;
2. 便于权限管理。对于批量的用户权限调整,只需调整用户关联的角色权限即可,无需对每一个用户都进行权限调整,既大幅提升权限调整的效率,又降低漏调权限的概率;
目前主要有以下几个版本:(整体又叫做RBAC9