暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

用户权限管理的场景和问题思考

看代码 2020-02-13
385

用户权限,我遇到几种需求场景和模型,列出来。


一、我先列以前见过的产品的模型


第一种:根据用户是否登录判断有没有权限;


第二种:定义系统角色,如管理员、普通用户;


第三种:定义系统角色和状态(通常在申报系统),如下:

角色有:管理员、普通用户

状态有:正常、待审核、审核不通过、待提交、禁用

顾名思义:

管理员+正常:系统的管理员

普通用户+正常:能正常使用系统的主要业务功能

普通用户+待审核:能修改密码、修改审核资料

普通用户+审核不通过:看业务场景设置,能修改密码和重新提交审核资料等

普通用户+待提交:看业务场景设置,能修改密码和重新提交审核资料等

普通用户+禁用:不能登录系统


第四种:多业务的权限管理模型

比如:车辆管理系统

有资产管理、燃油管理、缴费管理、维修管理、系统管理等等功能模块

总不能用第三种模型了吧,一个用户什么都管。

所以,要用角色模型,也称作岗位

就像你在单位里面,什么岗位赶什么活。

然后,给每个模块设定角色,用户拥有该角色,就有该权限。


第五种:基于第四种的动作维度控制模型。

这里先简单扫盲一下,个人理解的完整权限模型应该是三维的

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,

?数据维度咋办?!


先不写了,吃饭。

想法还不成熟,留后面写。



文章转载自看代码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论