这可能是最全面的权限逻辑说明了
导语:权限是每一个系统都离不开的重要基础功能,对于不同的业务需求对权限有不同的要求,但权限配置的底层规则是一样的。本文针对对所有的权限类型和权限分配方式做了详尽的分析,以理解权限的底层逻辑。
一、核心要素
权限系统核心要素为:账号、用户、角色、用户组、权限等,各要素实体关系如下:
各要素主要属性及与属性中的实体对应关系:
二、权限类型及权限分配方式
与权限相关的实体对象之间的关系如下图:
权限类型总共归结为页面权限、操作权限、数据权限三类,区分一个权限是页面权限还是操作权限的标准为判断该权限下是否还需要再分配操作权限和数据权限,如果需要则为页面权限,否则为操作权限。
系统权限分配可按角色授权或按用户授权(一般不采用此方式授权,用户数量较少时或不能明确用户角色时可采用此方式授权)。
1. 页面权限授权
页面权限授权包含可查看页面授权以及页面可见字段授权,大多数情况下不需要页面可见字段授权的配置,系统默认所有字段可见,或者通过反向选择不可见字段的方式进行配置。
2. 操作权限授权
分配页面的操作权限,如增、删、查、改、导入、导出等操作权限。
3. 数据权限授权
数据权限分配可查看的数据权限和可操作的数据权限,大多数情况下只需要配置可查看的数据权限,可操作的数据权限需要对一些操作按钮分配可操作的数据范围,权限分配方式相同。
数据权限分配方式可归结为以下几种:
(1) 本人
数据权限选择【本人】,用户只能查看本人所创建的数据。
(2) 本部门
- 部门成员创建的数据:数据权限选择【本部门-部门成员创建的数据】,用户可查看本人所属部门下的所有成员创建的数据;
- 有业务归属的数据:数据权限选择【本部门—有业务归属的数据】,用户可查看本人所属部门所拥有的业务数据范围,(如高校课程信息分别归属不同的学院,则每个学院下的成员则只能查看归属自己学院的课程相关的业务数据,如课程排考数据)。
(3)本组织(如xxx项目组)
- 部门成员创建的数据:数据权限选择【本组织-部门成员创建的数据】,用户可查看本人所属组织下的所有成员创建的数据(如“xxx项目组“的成员只能查看自己所属的项目组的成员所创建的数据);
- 有业务归属的数据:数据权限选择【本部门—有业务归属的数据】,用户可查看本人所属组织所拥有的业务数据范围。
(4) 全部
数据权限选择【全部】,用户可查看所有数据。
(5) 自定义
- 选择人员:数据权限选择【自定义-选择人员】,选择多个人员姓名,用户可查看所选择的成员创建的数据;
- 选择部门:1)部门成员创建的数据:数据权限选择【自定义-选择部门—部门成员创建的数据】,选择多个部门名称,用户可查看所选择的部门下所有成员创建的数据;2)有业务归属的数据:数据权限选择【自定义—选择部门—有业务归属的数据】,用户可查看所选择的部门拥有的业务数据;
- 选择组织:1)组织成员创建的数据:数据权限选择【自定义-选择组织-部门成员创建的数据】,选择多个组织名称,用户可查看所选择的组织下的所有成员创建的数据;2)有业务归属的数据:数据权限选择【自定义—选择组织—有业务归属的数据】,选择多个组织名称,用户可查看所选择的组织拥有的业务数据;
- 选择业务数据:数据权限选择【自定义-选择业务数据】,选择多个业务数据,用户可查看所选择的业务数据(如用户只可查看三门课程的数据排考数据,则配置权限时选择可查看的三门课程的名称即可)。
4. 系统内置权限
权限可以在权限管理中心配置,一些根据业务需求能够提前确定页面权限、操作权限、数据权限的角色或用户可提前在系统内置权限,无需权限的配置功能,从而减少开发工作量:
1) 某角色的所有权限都固定不变
如课程教学平台的学生角色,在平台的权限是固定的,则系统可为学生角色内置页面权限、操作权限、数据权限,无需在权限配置页对该角色进行权限配置。
2)某角色的某类数据权限固定
如“对于高校所有学院下的院长都可以查看本学院所开设的课程“ 该数据权限可通过系统内置。
为系统内置角色【院长】按照“本部门—有业务归属的数据“的权限规则内置好数据权限,业务字段即为“课程”,业务数据与部门的关系为课程与学院的关系,此关系在课程信息表中已做维护。
3)所有用户的某类数据权限固定
如“对于所有成员只能查看自己所属项目组的数据”,该数据权限可通过系统内置。为系统所有用户按照“本组织—组织成员创建的数据“的权限规则内置好数据权限。
5. 其他权限情况说明
有些权限具有互斥的关系,这在系统中要事前存储权限的互斥关系,以使具有互斥关系的权限不被同时选到。
有一些操作按钮其实也带有可操作的数据范围权限,如列表中单条数据的编辑、删除、作废等操作,可以对每一个按钮配置可操作的数据权限(数据权限分配方式同“3数据权限授权”),一般系统默认可操作的数据范围为所有可见的数据,为系统内置权限不对单个操作进行数据权限配置。
当用户有多个角色时,用户登录系统后需要角色切换,已获得相应的角色权限。
三、总结
以上是对权限类型和分配方式以及与权限相关的各实体之间的关系,具体系统不会设计这么复杂的权限配置功能,具体需要哪些权限配置功能需要根据具体业务来决定,希望本篇文章能够对你的权限设计工作提供参考和帮助!
本文由 @白晓飞 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
请教下,如果说,业务要能看和能操作的数据范围不一致,那数据权限设计,是不是得区分:可查看数据范围、可操作数据范围?
比如,采购专员可以看全部门的采购单,但是只能编辑自己创建的数据。于是分配数据权限的时候,可查看范围选择【本部门】,可操作范围选择【本人】
涨知识
很高兴能给你带来帮助