在几乎所有企业级系统中,权限管理都是安全体系的核心。简单来说,它解决两个根本问题:
你是谁?(认证)
你能做什么?(授权)
这两个环节共同构成了用户访问系统的“守门人”。
1. 什么是权限管理?
✅ 认证(Authentication)—— “你是谁?”
这是登录过程的核心。
系统通过用户名 + 密码(或其他凭证,如短信、OAuth2、JWT)验证用户身份是否合法。
- 成功 → 登录进入系统;
- 失败 → 提示“用户名或密码错误”。
这一步只关心“你是不是系统里的用户”,不涉及你能干什么。
✅ 授权(Authorization)—— “你能做什么?”
登录成功后,系统根据你的身份(通常是角色)决定:
- 能看到哪些菜单?
- 能访问哪些接口?
- 能操作哪些数据?
比如:
- 普通员工只能查看自己的报销单;
- 财务人员可以审批所有报销;
- 管理员能看到整个组织架构。
这就是基于权限的资源控制,防止越权操作、数据泄露或流程混乱。
📌 一个完整的权限系统 = 认证 + 授权
2. 通用权限管理模型
为了高效实现授权逻辑,业界总结了几种经典模型。最常用的是 RBAC(基于角色的访问控制),但了解其他模型有助于技术选型。
(1)ACL(Access Control List)—— 访问控制列表
- 核心思想:直接在资源上绑定“谁可以访问”。
- 例如:文件 A 允许 用户1、用户3 读写。
- 优点:简单直观;
- 缺点:用户一多,维护成本爆炸式增长。
适合小型系统或资源粒度极细的场景(如操作系统文件权限)。
(2)RBAC(Role-Based Access Control)—— 基于角色的访问控制 ✅(最主流)
- 核心思想:引入“角色”作为中间层。
用户 ——<分配>——> 角色 ——<拥有>——> 权限(菜单/接口/按钮)
- 例如:
- 创建角色 “财务专员”;
- 给该角色分配 “查看报销单”、“审批报销” 权限;
- 将用户张三分配到该角色。
- 优点:
- 权限管理集中、灵活;
- 新增用户只需分配角色,无需逐个赋权;
- 支持角色继承(如“超级管理员”包含所有角色权限)。
💡 几乎所有后台管理系统(如 OA、ERP、CMS)都采用 RBAC 模型。
(3)其他模型(扩展了解)
| 模型 | 全称 | 特点 |
| DAC | Discretionary Access Control | 资源拥有者自主授权(如 Linux 文件 chmod) |
| MAC | Mandatory Access Control | 系统强制控制,用户不可更改(用于军事/高安全场景) |
| ABAC | Attribute-Based Access Control | 基于属性动态判断(如“工作时间+部门+安全等级”组合决策),灵活性极高,但复杂 |
在微服务架构中,RBAC 仍是主流,但可结合 ABAC 实现更细粒度的动态权限(如数据行级权限)。
3. 微服务下的权限挑战
在单体应用中,权限逻辑集中在一处;但在微服务架构中:
- 用户认证通常由 统一认证中心(如 OAuth2 + JWT)处理;
- 各微服务需自行校验 JWT 中的角色/权限信息;
- 权限数据可能分散在不同服务中(如用户服务管角色,订单服务管订单权限);
- 需要设计 权限同步机制 或 权限查询 API。
因此,现代权限系统往往:
- 使用 JWT Token 携带用户角色和权限声明;
- 在网关层做初步鉴权;
- 在业务服务中做细粒度授权校验。
小结
- 认证 = 登录,确认身份;
- 授权 = 控制能访问什么;
- RBAC 是最实用、最广泛采用的权限模型;
- 微服务下需将权限体系与认证中心、API 网关协同设计。