前言
权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。
目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个 APP 等十几个系统和终端。
1、权限模型
迄今为止最为普及的权限设计模型是 RBAC 模型,基于角色的访问控制(Role-Based Access Control)
1.1 RBAC0 模型
RBAC0 模型如下:
这是权限最基础也是最核心的模型,它包括用户 / 角色 / 权限,其中用户和角色是多对多的关系,角色和权限也是多对多的关系。
用户是发起操作的主体, 按类型分可分为 2B 和 2C 用户,可以是后台管理系统的用户,可以是 OA 系统的内部员工,也可以是面向 C 端的用户,比如阿里云的用户。
角色起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如 20 个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。
但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给 100 人甚至更多授权,工作量巨大。
这就引入了 "角色 (Role)" 概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。
- 权限:
是用户可以访问的资源,包括页面权限,操作权限,数据权限:
- 页面权限:
即用户登录系统可以看到的页面,由菜单来控制&#x