你好,我是看山。
本文收录在《一个架构师的职业素养》专栏。日拱一卒,功不唐捐。
今天咱们一起聊聊权限系统。
以大家熟知的电商场景举例:
- 用户可以分为普通用户、VIP用户:我们需要控制不同角色用户的访问范围。比如,京东的PLUS会员,可以进入会员专区,而且能够使用礼金领取优惠券,但是普通会员没有这项功能;
- 用户还可以范围顾客、商家:顾客可以从APP下单,可以查看自己所有的订单,这些订单属于不同的商家;商家可以从后台看到自己店铺的所有订单,这些订单分属不同的顾客。
对于一个闭环的系统来说,无论是ToC还是ToB,权限系统都是基础组件,用于保障用户在权限范围内操作有权限的数据。
如何控制权限
既然要控制权限,那我首先需要清楚需要控制的因素有哪些?
第一是控制维度,用户可以做什么(Operation),在哪些对象(Object)操作:
- 比如:对某个数据的查询、编辑、删除。我们可以将之称为功能权限。功能权限又可以细化为,看到菜单、打开页面、页面中有哪些按钮、可以访问哪些请求等。
- 比如:A可以管理甲乙丙三个店铺;B可以管理丁一个店铺。我们可以称之为数据权限。数据权限可以细化为:单点、级联、递归等。
第二是控制粒度,我们的权限可以控制到一组人员,还是控制到一类人员:
- 按组区分:按照人员的角色进行划分,比如,A、B、C是同一个部门,具备的权限都是一样的,相同的功能权限、数据权限;
- 按类区分:按照用户的特征进行划分,比如,A、B、C是同一个部门,数据权限相同。但是A是正式员工,可以有删除权限;B是正式员工,但是上个月绩效太低,删除权限被收回;C是实习生,只能有查询权限