用户权限,我遇到几种需求场景和模型,列出来。
一、我先列以前见过的产品的模型
第一种:根据用户是否登录判断有没有权限;
第二种:定义系统角色,如管理员、普通用户;
第三种:定义系统角色和状态(通常在申报系统),如下:
角色有:管理员、普通用户
状态有:正常、待审核、审核不通过、待提交、禁用
顾名思义:
管理员+正常:系统的管理员
普通用户+正常:能正常使用系统的主要业务功能
普通用户+待审核:能修改密码、修改审核资料
普通用户+审核不通过:看业务场景设置,能修改密码和重新提交审核资料等
普通用户+待提交:看业务场景设置,能修改密码和重新提交审核资料等
普通用户+禁用:不能登录系统
第四种:多业务的权限管理模型
比如:车辆管理系统
有资产管理、燃油管理、缴费管理、维修管理、系统管理等等功能模块
总不能用第三种模型了吧,一个用户什么都管。
所以,要用角色模型,也称作岗位
就像你在单位里面,什么岗位赶什么活。
然后,给每个模块设定角色,用户拥有该角色,就有该权限。
第五种:基于第四种的动作维度控制模型。
这里先简单扫盲一下,个人理解的完整权限模型应该是三维的
1、页面维度:用户能访问什么页面
2、动作维度:用户能对页面做什么操作:新增、修改、删除
3、数据维度:页面能看到哪些范围的数据。
再通俗解释:
省公司:可以看到全省的车辆数据
市公司:只能看到所辖市的车辆数据
然后,讲回第五种动作维度控制模型
就是在第四种模型的基础上,加上动作模型,约定用户能做什么操作
通俗的说,有些用户对数据可读可写,有些用户对数据只读。
第六种模型:基于第五种加上数据维度控制的模型
基于上面加红文字的解释。
举个例子:就是权限控制实现
省公司管理员:可以管理全省的车辆数据,并能对数据做增删改查
省公司查看员:可以查看全省的车辆数据,只能对数据做查看操作
市公司管理员:可以管理所辖市的车辆数据,并能对数据做增删改查
市公司查看员:可以查看所辖市的车辆数据,只能对数据做查看操作
第七种模型:基于第六种的限时授权(代理)模型
主要用在流程审批环节
举几个例子:
场景一:用户A(领导)休假不能审批公文,休假期间限时授权审批权限给指定用户B。而且分两种细化场景:
(1)用户A授权后,其对应的权限消失;
(2)用户A授权后,其对应的权限还保留;
场景二:系统计划2020.02.21开始启用,后台管理员不可能到当天才给相关用户分配权限,往往就需要提前分配好,设定该权限的开始时效。
第八种模型:QQ群模型
可以这样描述:
1、QQ群创建者:有QQ群的所有权限,可以指定QQ群管理员
2、QQ群管理员:可以实现QQ群管理员
3、QQ群普通用户:只能用QQ群的普通功能
这种模型,主要在群聊系统上,每个用户个体都有机会成为管理员,不同的群角色不同。
第九种模型:社交模型
简单的说,类似QQ空间
1、自己是空间的管理员,可以对空间做任何管理操作
2、自己可以对空间的文章、图片设定访问控制权限
3、好友或游客只能根据设定的权限,有限访问指定内容。
二、权限设计
这点比较难,就第六和第七种考虑。
有几个难点场景
1、用户和部门的关系
2、职能部门和权限部门的关系
3、历史数据关系
4、职能部门和权限部门是否共享:或者是否有HR同步的情况
用户和部门的关系,说白了就是一对一还是一对多的关系
现实环境往往都是一对多,一个用户率属多个部门。这其实有跟第2点:职能部门和权限部门的关系交互。
先举一个例子:
用户A可以是分公司A的领导,也同时是分公司B的领导。
这有两种场景:
1、用户A在真实组织上分别挂靠分公司A和分公司B
2、用户A在真实组织上挂靠总公司,权限在分公司A和分公司B
职能部门和权限部门的关系,就是用户在公司职能上属于某个部门,在业务权限上属于另外一个部门
遇到过类似的场景:
用户A在部门A,工作需要借调去了部门B,做部门B的权限操作。但HR系统中,用户A还是在部门A中
历史数据关系
举个例子
车辆A在2020年前属于部门A,车辆的用油费用支出属于部门A,2020年后划转到部门B,部门A的管理员应该还能查询到车辆A在2020年前的用油数据。
系统设计(没系统实战,仅供参考哈)
应该有几张表
1、用户表:B_USER
2、职能部门表:B_DEP
3、职能部门和用户关系表:B_USER_DEP(实现用户和部门的一对多)
4、权限部门表:B_GROUP(或者共享DEP,看业务场景,通常DEP不需要HR同步的话,建议GROUP和DEP同一个,这样)
5、权限部门和用户关系表:B_USER_GROUP(实现用户和权限部门的一对多)
6、动作表:B_ACT(新增、修改、删除)
7、角色表(岗位表):B_ROLE:车辆管理(veh)、燃油管理(oil)、维修管理(repair)
8、状态表:B_STATUS:正常/禁用
9、权限页面表:B_PAGE
如: ~/oil/:燃油页面
10、角色权限关联表:B_POWER
几个属性:
(1)角色
(2)状态
(3)页面
(4)动作:一对多关系:,id,id,id,
?数据维度咋办?!
先不写了,吃饭。
想法还不成熟,留后面写。




