文章从权限模型出发,结合具体案例分享了To B 的权限体系设计关键环节和需要注意的问题,与大家分享。
之前在另一篇文章里介绍了 权限体系的基础概念如RBCA和ACL ,网友反馈说不够深入,需要来点见真章的东东,最好是能够看完后,就可以直接拿到工作中投入使用的。联想到工作中遇到的几个都属于ToB领域里,但面向不同业务方向和类型的实际项目,拿来具体讨论一下,如何为平台设计一个比较通用的权限系统。
我这里用的是xiaopiu,在线绘图。不用额外安装程序。如果专业点的,一般会用axure,有一定的学习门槛。
从这张原型图里,可以看到这是一个体现了权限体系核心功能的简单系统。
实现的原理是什么呐?首先来了解下 资源 的概念
如果没有【账户】和【角色】,这就变成了一个最纯粹的功能系统了。这个系统由系统概览和实用功能两个一级菜单,以及下层的各个细分功能组成。
第一步需要用标识,来标记这些功能。通俗的,可以将这些功能命名为资源,后台数据库中就是通过资源ID来识别某一个具体的功能的。
页面上的每个元素都要有对应的资源ID,这是为了在前端展示的时候,能够做到让不同用户登录后,有的用户可以查看,有的可以编辑,有的可以删除。
所以第二步,需要定义对各个资源ID能够进行的操作,也就是资源和操作之间会产生一个映射关系。
操作的含义,可以理解为CRUD(创建Create/读取Read/更新Upate/删除Delete)四种类型。一般实际实现过程中,为了不这么麻烦,可以将这四种操作简化为全有或者全无。用映射关系来表示就是
resourceId -> CRUD
实际实现的效果就是,当用户能够看到这个资源,那他就可以操作这个资源。如果真的遇到了有特定的需求,就是对于同一个资源,这一种类型的用户必须有而且只能有查看的权限,同时必须没有编辑的权限,那么就需要将这个映射关系打散为如下格式
resourceId -> R resourceId -> CUD
接下来,准备工作都做好了。铛铛铛,将进入重头戏,账户和角色。
从业务流程上来讲,是先有角色,再有账户。所以需要先创建一个角色。
王经理是一个账户,他有一个叫做“经理”的角色。系统中新增一个角色的时候,一般至少有3个字段,分别是角色的名称(必填),角色拥有的资源的权限(必填),对于该角色的描述(可选)。对于各项的要求如下:
根据上述描述,在系统中创建两个角色
万事俱备,只欠东风。最后一步就是新建3个帐户。账户新建的时候,需要填写的字段,除了账户名称(当然账户名称也是不允许的重复的)和本身这个系统要求的一些信息(例如照片,手机号,电话号码等)以外,就只需要一个字段【角色】了。
这里的角色字段的取值,来自于上一小节里提到的【角色】。一个账户,可以绑定多个角色。不同的账户,也可以绑定同一个角色。
为了让王经理,小李,小明能够正常服务于自己的岗位,实际上就是:
然后这三个人,用自己的帐号密码登录就可以了
在一个真实的系统中,进行权限操作步骤是:
另外,映射关系为
本文由 @花生草 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
以上所述就是小编给大家介绍的《案例演示:ToB领域的权限体系实战》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!