10张图,系统扫盲权限管理功能设计思路
大家好,见字如面,我是穆宁。
今天,应产品穆屋群友要求,给大家系统讲解下权限管理功能的设计思路。也是为没有做过权限管理功能模块或即将要做的同学,做一下系统扫盲。
还是那句话,做产品有个基本设定:
定位确定需求,需求确定功能。
所以权限管理功能从某种意义上必然是满足了某类需求的,我们就从需求说起,聊一聊管理后台。
权限管理模块的需求目标包括如下三点:
(1)对应用系统的所有资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮控件等进行权限的操控;
(2)完善用户、角色、组织、资源、操作的管理功能,其中的组织管理模块只提供组织视图,不参与权限的控制管理。
(3)开发人员开发新的系统功能,通过资源和角色模块进行操作管理。使用系统管理员身份登陆,直接将访问路径作对角色资源授权给操作,实现资源访问控制管理。
所以从需求范围层面来看,权限可以分为三种:页面权限,操作权限,数据权限。
页面权限控制你可以看到哪个页面,看不到哪个页面,又称为菜单权限控制。很多系统都只做到了控制页面这一层级,它实现起来比较简单,并且与操作权限有一定的关联性,所以在此我们将它与操作权限归并。(页面权限可以理解为操作权限的最底层权限:浏览)
操作权限则控制你可以在页面上操作哪些按妞。当我们进入一个页面,我们的目的无非是在这个页面上进行增删改查,那在页面上对应的操作可能是:查询,删除,编辑,新增四个按钮)可能你在某个页面上,只能查询数据,而不能修改数据。
数据权限则是控制你可以查阅、管理、导出哪些数据,比如A部门的人只能看到或者修改A创建的数据,他看不到或者不能修改B部门的数据。
好,说完权限管理的范围,我们接下来考虑,怎么样对操作权限与数据权限进行管理。这里我们引入一个成熟概念,叫做RBAC模型。
RABC(Role-Based Access Control),基于角色得访问控制。通俗说,就是,权限不会直接分配到用户,而是分配到用户所拥有得角色。
这样的好处是什么?好处就是如果用户全体特别大,分配权限就能累死人,基于RBAC更适合企业应用得权限控制。
RBAC得四大模型RBAC根据这套模型功能的复杂程度不同,由简单到复杂又可以分为RBAC-0、RBAC-1、RBAC-2、RBAC-3四个层级。
RBAC-0:
RBAC-0是最基础的,就是在用户与角色、角色与权限间建立关系,每种关系均为多对多。
RBAC-1:
RBAC-1是在RBAC-0的基础上,增加了继承关系。就是一个角色只能有另一角色的部分权限,这个角色的权限大小受另一角色权限影响。简单说,角色2由角色1派生,那么角色2所有得权限必然小于角色1,角色1拥有权限1,2,而角色2只有拥有权限1。
RBAC-2:
RBAC-2模型,其实就是角色冲突,一个简单例子,你不能即是运动员也是裁判员,这样关系就乱了。这里就是用户3,不能同时拥有角色2,3。
RBAC-3:
RBAC-3是RBAC-1与RBAC-2的结合,可以理解为1+2。就是既有继承关系,又有限制条件,基础都一样。
好,说完RBAC模型,我们进入到下一环节。如何利用RBAC模型,对操作权限、数据权限进行管理呢?
(1)数据权限管理
数据权限是指用户是否能够看到某些数据。主要应用在数据有保密要求,或数据量大,需按用户或角色来进行区分时。例如:财务主管在后台可以看到公司所有人的工资流水,但普通员工只能看到自己的工资流水。
在这里,有的同学或许认为,既然我们的权限是跟角色关联,为什么“查看工资流水”这个权限精确到每个用户了呢?其实这就是RBAC-2的一种,权限与角色关联后增加了限制条件,不过这种限制条件无法在页面上灵活配置。数据权限的颗粒度由粗到细可以分为菜单级、栏目级、字段级,一般配置页面都可以灵活操作。
(2)操作权限管理
操作权限是指用户是否能够操作对应按钮。需要先有数据权限,才有操作权限,所以需要增加系统自动校验:选择了操作权限,就默认勾选了查看(数据)权限;取消了数据权限,就自动取消了操作权限;以上就是我们做单系统的权限设计分享的内容。在多系统的权限设计中,虽然理论基础一样,但因为涉及到多个系统,所以产生了很多其他问题,需要另外解决。
权限管理
每个用户组的管理员都有添加用户,授予用户权限的能力。
权限的意思就是对某个资源的某个操作,现在规定:所谓资源,即系统的模块;所谓操作,包括:增加、删除、修改、查询等操作。
权限管理系统的总体功能分为:授权与认证。授权,指将权限授予角色或用户。如果用户A拥有角色B、角色C,那么,缺省的情况下,用户A将拥有被分配给角色A和角色C的所有权限。如果用户拥有多个角色,那么用户的权限是这些角色权限的合集。
总体上,可分为模块管理、角色管理,用户组管理和用户管理模块:
模块管理:
因为模块是一个树状结构(本系统只支持两级模块的结构),我们可以点击其中一个模块以便打开其子模块来维护;
角色管理:
可以添加角色信息、删除角色信息以及给角色授权。在这个界面上,按照两级模块的形式列出系统所有模块,以及在这些模块上面的CRUD(添加、读取、更新、删除)权限;所谓“启用”,意思是本设置有效,否则设置无效。
用户组管理:
与角色管理流程基本相似,只不过,用户组所具有的权限是其用户组下的用户基本的权限,而角色所具有的权限是其用户组下的用户附加的权限。
用户管理:
因为用户实际上就是系统人员的帐号,而且每个人只能拥有一个帐号,所以用户管理主界面,实际上就是系统所有人员的列表!
【分配帐号】 - 给人员分配帐号,如果已经有帐号,则提示无法继续分配帐号,如果想修改帐号的话,需要先删除帐号,再重新分配
【删除帐号】- 提示是否删除,如果确定,再发出删除请求,在删除成功之后,刷新界面。
【分配角色】- 给用户分配角色,一个用户可以拥有多个角色;
好了,今天我们的系统扫盲就到这里,如果觉得对你有帮助,欢迎。相关权限管理系统案例及思维导图,可在公众号中按照如下操作领取。
我是穆宁,你的产品知识系统扫盲小帮手,快来关注我,我们明天见!
我的书:《产品思维模型-方法与实践》
我是穆宁,让我做下自我介绍
工作多年后辞职,考了个北邮硕士
混过BAT做过PM,创过业,现央企搬砖
虎嗅,36kr,人人产品经理专栏作家
互联网撰稿人 | 音乐人 | 网球手
别被任何人定义,你我都是独一无二
本文来自微信公众号 “产品思维模型”(ID:muningtalk),作者:穆宁,36氪经授权发布。