权限系统先从资源和动作开始

权限系统如果一开始只围绕角色设计,很容易后面变成角色越来越多、规则越来越乱。更稳定的方式是先拆资源和动作,再用角色去组织权限。

资源是什么

资源可以是订单、用户、文件、配置、报表,也可以是某个后台功能模块。资源定义清楚后,系统才知道权限保护的对象是什么。

如果资源边界不清,角色里就会堆满含糊的权限项,比如管理、处理、查看全部。这类权限后期很难审计。

动作是什么

动作是对资源能做的事情,比如查看、创建、修改、删除、审核、导出。动作越贴近业务语义,权限判断越清晰。

同一个页面可能包含多个动作。能打开页面,不代表能导出数据;能查看订单,不代表能修改状态。把动作拆开,权限才不会过粗。

数据范围要单独考虑

很多系统不只是判断能不能操作,还要判断能操作哪些数据。比如只能看自己创建的数据、只能看本部门数据、能看全部数据。数据范围最好独立建模,不要藏在角色名称里。

这样后期组织结构变化时,权限规则更容易调整。

复盘

权限设计的顺序应该是资源、动作、数据范围、角色。角色只是权限集合的管理方式,不应该成为业务规则本身。这样设计出来的权限系统更容易扩展,也更容易解释。

参考