笔者结合工作实践,通过案例等方式分享了关于许可设计的知识。,供参考和学习。
最近我们的系统在做一个新的功能,涉及到一些权限相关的功能,之前也接触过权限相关的设计。本文将总结权限设计。对于各类产品,无论是C端产品还是B端产品,每个产品都有权限控制,权限管理是系统中的基础模块。在构建系统时,系统架构需要完成权限构建。良好的权限管理可以为后续的系统扩展提供很好的兼容性。
一、常见的权限分类1.登录权限
我们日常使用APP时,有时会遇到一些权限控制。比如在阿里零售APP的首页(下图1),用户在没有登录的情况下,只能看到部分商品的价格。只有登录才能看到产品的价格。这种权限控制也比较简单,需要前端开发根据用户当前的登录状态做出判断,但是这个是针对每个商品的价格,单独配置权限是否对未登录的用户开放。
2.认证机构
不过有些产品的权限检查会更严格。比如京东掌柜宝APP首页(下图)即使登录后也看不到商品价格,必须认证为店家才能看到商品价格。而且,在这个产品里,所有的价格都看不到。这是一个全局配置。不管是哪个产品,只要用户没有认证,就看不到产品的价格。
3.成员权利
还有其他权限我必须是会员才能操作。比如下图的QQ音乐会员,当我们非会员时,只能听片段,页面会直接提示我们需要权限才能播放完整的歌曲。还有一些其他的工具类app也会用同样的套路。可以让用户先免费试用一段时间。如果想继续使用,需要付费。一些基本功能是免费的。如果使用所有功能,需要付费。这些都是一样的逻辑,前端需要检查当前登录的用户是否有会员权限。
4.菜单权限
上面说的是我们自己的手机APP,也就是用户的终端里面的一些权限验证逻辑,我们管理之后也有其他的权限,最常见的就是菜单权限。顾名思义,在后台管理页面中,我们经常会有一些菜单,每个菜单都有相应的权限,只有符合权限的人才能访问。比如下图,左边的菜单会有不同的菜单,但是不同的人会被赋予不同的权限,所以不同的人会看到不同的菜单。
另外,在一些手机app上,会有不同的身份。比如boss直聘上,可以切换身份。作为求职者和招聘者,不同的身份会看到不同的页面。
5.操作权限
操作权限是指用户执行某项操作的权限。例如,在我们的商品管理中,货物装卸功能的操作需要专门的人员来操作,而查看货物明细的权限可以发布给更多的人,所以查看货物明细的权限和操作货物装卸的权限会有所区分。
6.数据权限
数据权限将控制用户访问页面时可以查看的数据。一般公司团队大的时候会需要这种需求差异化,公司团队小的时候就不需要了。公司员工多的时候,通常会有很多业务部门,每个部门负责不同的业务。根据管理需要,有时会需要这些业务部门之间的数据。
比如我们最近在按仓库做库存管理。在库存管理的页面上,每个仓库的库管员只能看到自己管理的仓库的库存数据,看不到其他仓库的库存数据。这是针对业务部门的,但是一个公司里也有一些管理部门,其员工可以看到所有业务部门的数据,所以需要有一个权限才能看到所有部门的业务数据。除了这个数据权限,还有字段的数据权限。
例如,在订单列表中,有些人没有权限查看订单的收件人信息的字段,包括收件人姓名、电话和地址信息,有些人没有权限查看订单的商品价格信息。这种数据权限的划分需要按照公司的管理要求来处理。当公司需要管理到这么细的粒度时,就会再做一遍。一般中小企业一般情况下很少有这个需求。
二、如何实现权限管理上面介绍了APP和管理后台的一些常用权限。这些权限基本可以满足我们对用户权限的控制。但是如何实现这种权限设计,本文主要介绍如何设计上面的第4、5、6种后台权限。在我们一般的后台权限设计中,通常会用到这些概念:用户、账号、角色、权限。
在我们的系统中,用户将分配一个帐户。这个账号不会和权限直接相关,但是账号中间有一个角色。账号、角色、权限是系统中最底层的概念,也是其他业务逻辑和功能逻辑的基础。这三者在系统的权限管理中是必不可少的。先说这三位是如何实现权限管理逻辑的:
1.许可
根据业务需求,我们会向开发者提出我们的需求,需要权限控制的地方,技术人员会根据我们的需求创建一系列的权限标记,对一些页面、按钮、数据等添加相应的权限检查。,以便经理拥有可用的权限。
2.作用
系统管理员,通常是超级管理员,会根据实际需要在系统中创建一个角色。这个角色只是一个概念,然后把上面开发人员创建的权限标识符加到这个角色上。这样,这个角色就有了这个权限。权限和角色之间通常存在多对多的关系:
3.账号
最后,我们将创建的角色分配给相应的帐户,这样该帐户就拥有了该角色所拥有的权限,如下图所示。当终端用户登录到他的帐户时,他拥有该帐户下的权限。
方法是灵活配置账户的权限。当我们增加一个新的权限时,只要把这个权限给需要这个权限的角色,所有给过这个角色的账号都可以拥有这个权限,不需要为每个账号单独打开权限。
当一个组织逐渐扩大时,权限、角色和用户的数量会不断增加。很多时候上面的逻辑还是可以满足我们的需求的,但是对于我们的配置来说还是有点麻烦,所以可以引入组织结构和权限组的概念。
当组织中不断有新员工加入时,我们把他的新账号放到组织架构下,然后按照一定的规则组合角色,再链接到组织架构上。当用户的帐户在该组织下时,他拥有该角色组中的所有权限。这样,对于新员工来说,只需要把他放到相应的组织架构中,不需要一个一个给他分配角色。
以上是权限管理的总结,谢谢阅读~
作者:三点半先生;微信微信官方账号:小眼产品(ID: xiao _ pm)一个产品小学生在这里记录自己日常工作学习中对产品的一些想法。
本文由@三点半先生原创发布。每个人都是产品经理。未经作者允许,禁止转载。
图片来自Unsplash,基于CC0协议。