技术编程|后台权限管理设计思路:三种模型分析

编辑导语:任何系统/产品搭建时 , 最先考虑的都应该是权限管理模块 , 而且权限管理模块的清晰、稳定是平台产品健康发展的基石 , 权限管理核心考虑的问题是用户与权限的关系 。本文作者对三种不同权限管理的版本展开了梳理分析 , 与大家分享 。
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

01 超简版本-用户/权限模型
用户直接与权限映射 , 这种设计的优势在于简洁直观 , 适合用户数量不多 , 功能较为简单的系统 , 它的劣势也是非常的明显当用户量增多时 , 维护成本较高 , 可扩展性差 。
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

系统页面Demo:
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

02 进阶版本-用户/角色/权限模型
若系统用户和功能增多 , 为每一个用户匹配单独的权限 , 会变得非常的繁琐 , 因此权限分门别类 , 形成“权限包” 。从用户的角度 , 将用户分类 , 同一类用户固定为相同的角色 , 赋予相同的权限 , 会让操作变得简单很多 。
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

系统页面Demo:
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

03 层级版本-组织/用户/角色/权限模型
对于管理性后台 , 往往人员是职级区分的 , 比如用户王五为销售组长 , 其组员赵六和孙七 , 王五需要看到赵六和孙七的销售额数据和可以进行赵六和孙七的所有操作 , 而赵六仅能看到自己的销售额数据 , 进行和自己相关的操作 。
这个事例中引入了两个新的概念 , 一是用户的权限可以细分为功能权限和数据范围权限 , 二是数据范围和功能权限都有了继承的层级概念 。
所谓功能权限大家比较好理解 , 比如能否看到某个页面 , 能否点击某个按钮 。而数据权限略抽象些 , 比如在业绩报表模块 , 从功能权限角度 , 可以决定用户能否打开这个报表页面 , 但是不同用户进来看到不同的数据(王五需要看到赵六和孙七的销售额数据 , 而赵六仅能看到自己的销售额数据 , 看不到孙七的) , 则是由数据范围来控制的 。
技术编程|后台权限管理设计思路:三种模型分析
文章图片

文章图片

1. 数据范围的继承
我们可以将用户进行分级管理 , 比如建立多层级的组织架构树 , 将不同用户放置于组织架构的不同根节点上 , 来实现多层级用户的建立和管理 。
1)如果用户的层级如果比较简单(不多于三级) , 可以将层级关系融入到角色之中 。比如用户分为三级:管理员-组长-组员 , 管理员能看到全部的数据范围和拥有全部的功能权限 , 而组长能查看组员的数据范围和拥有部分功能权限(比如无法编辑用户) , 而组员的数据范围仅仅为自己负责的数据和拥有部分功能权限 。
我们可以在组长这个角色下 , 允许其绑定组员 , 针对不同的角色设置不同的数据范围读取方式 , 管理员可以读取全部数据范围 , 组长需要读取其组员的 , 组员只能读取自己的 。大家有兴趣可以去了解下RBAC0/1模型


推荐阅读