RBAC
RBAC是一种基于角色控制权限的模型,这种模型理论上可以处理所有的权限问题,包括业务权限和数据权限. 实际上其中存在一些细节问题.
业务权限
业务权限简单理解就是 接口权限, 某个用户是否可以调用某个接口,比如新增A,修改B...,业务权限比较简单, 元数据(接口地址\接口名称)注册后,很容易分配,直接在拦截器中根据用户请求上下文进行判断即可.
数据权限
数据权限粒度更细,比如涉及到 分享 功能的业务系统,用户A分享给B的数据,对于B来说可能只有读权限.
这种情况下行级数据权限就不能简单的在一个地方处理了,实际处理中可能需要对SQL进行拦截处理亦
或是对SQL进行拼接.
- 增
增加数据应该按照业务权限处理,在数据还未产生的情况下,无法直接使用数据权限控制
- 删
一般而言 在 新增/查看/修改 权限的基础上,才可以 删除,逻辑删除可以理解为 一种特殊的修改
- 改
改权限 一般建立在 增/查的基础上
- 查
分页查可能需要抽象 资源组的概念,对主键进行一对多关联,方便权限表存储.
- 关联操作
关联操作涉及多个模型的情况下,最好直接从 最小粒度 进行控制, 比如 模型A属于模型B的子模型, 实际上一般可以直接理解 能够修改A即能够修改B, 不过也可以分别 判断.