第十三课:权限系统如何设计?——RBAC 与 Spring Security 架构

在做后端系统时,权限几乎是绕不开的一块。

无论是管理后台、SaaS 系统、企业内部系统,还是 App 接口,权限系统设计的好坏,决定了系统后期的可维护性与扩展性

很多初学者一上来就想写代码、加框架,但权限真正的难点不是技术,而是结构设计

本文从 0 开始,讲清两个核心概念:

  • RBAC ------ 权限设计模型

  • Spring Security ------ 权限执行框架

一个是"规则",一个是"执行者"。

一、权限系统到底在解决什么问题?

权限系统本质只解决两件事:

1. 认证(Authentication)

你是谁?

例如:

  • 用户名密码登录
  • 手机验证码
  • JWT Token
  • 第三方 OAuth

这是"身份确认"。

2. 授权(Authorization)

你能干什么?

例如:

  • 是否可以退款
  • 是否可以删除用户
  • 是否可以访问后台
  • 是否可以导出报表

这是"能力确认"。

还有一个经常被混淆的概念:

3. 数据权限(Data Scope)

你能看到哪些数据?

例如:

  • 只能看自己订单
  • 可以看本部门订单
  • 可以看全部订单

数据权限属于更深一层控制,通常在 RBAC 之上叠加。

二、什么是 RBAC?

RBAC 全称:

Role-Based Access Control ------ 基于角色的访问控制

它不是框架,而是一种权限设计思想

1. 为什么要 RBAC?

假设公司有 1000 名员工。

如果你直接给每个人分配权限:

  • 张三:读订单、改订单、退款
  • 李四:读订单
  • 王五:导出报表

当人员变动、岗位调整时,你会陷入灾难。

RBAC 的核心思想是:

不要给"人"权限,而是给"岗位"权限。

2. RBAC 的结构模型

RBAC 通常由三层构成:

复制代码
用户 User → 角色 Role → 权限 Permission
用户(User)

真实的登录主体。

角色(Role)

岗位 / 身份标签,例如:

  • ADMIN 管理员
  • OPS 运维
  • SALES 销售
  • FINANCE 财务
权限(Permission)

最小能力点,例如:

  • order:read
  • order:refund
  • user:delete
  • report:export

3. RBAC 的优势

优势 说明
易管理 不再针对个人配置
可扩展 新岗位只需加角色
可复用 多人共用角色
可审计 权限路径清晰
稳定性高 权限结构不随人变

RBAC 本质是在做一件事:

把"人"从权限体系中抽离。

三、RBAC 不解决什么?

RBAC 只解决:

"能不能做某件事"

它不解决:

  • 看哪些数据
  • 改哪一条记录
  • 多租户隔离
  • 审批流权限

这些属于"数据权限"和"业务权限"层。

四、什么是 Spring Security?

如果说 RBAC 是"权限蓝图",

那 Spring Security 就是"执行引擎"。

它是一个 Java 后端安全框架,主要负责:

  • 登录认证
  • Token 解析
  • 权限校验
  • 请求拦截
  • 安全防护

1. Spring Security 的核心能力

认证 Authentication

确认身份。

授权 Authorization

判断权限。

拦截 Interception

在请求进入 Controller 前做校验。

2. 一个现实类比

现实世界 系统世界
门禁卡 Token
保安 Spring Security
岗位证件 Role
房间钥匙 Permission

五、RBAC 与 Spring Security 的关系

两者的关系可以理解为:

RBAC Spring Security
权限结构设计 权限执行工具
决定"谁能做什么" 判断"能不能做"
抽象规则 具体实现

一个完整流程

  1. 用户登录获取 Token
  2. 请求接口时携带 Token
  3. Spring Security 解析身份
  4. 加载用户角色与权限
  5. 判断接口所需权限
  6. 有权限 → 放行 / 无权限 → 拒绝

RBAC 负责第 4 步的"结构",

Spring Security 负责第 5 步的"执行"。

六、权限系统设计的核心思维

1. 权限要设计成"能力点",而不是页面

页面会变,能力长期稳定。

2. 权限结构要稳定

角色和权限码必须可迁移。

3. 不要一开始就做复杂

先 RBAC,再数据权限。

4. 认证与授权要分离

登录不等于有权限。

5. 权限是系统基础设施

不是业务模块,而是底层能力。

七、总结

权限系统的本质不是技术难,而是结构思维难

可以用一句话总结:

RBAC 是"谁可以做什么"的规则模型。
Spring Security 是"执行这个规则"的保安系统。

当你理解了这两点,

后续无论是写代码、接框架、做微服务权限,都会变得顺畅。

权限设计不是一蹴而就的,

但只要结构清晰,系统就永远不会乱。

下一篇: 第十三课实战版:权限系统实战:RBAC + Spring Security 从 0 到可用(含核心代码)

相关推荐
不能隔夜的咖喱2 小时前
牛客网刷题(2)
java·开发语言·算法
serve the people2 小时前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
lekami_兰2 小时前
Java 并发工具类详解:4 大核心工具 + 实战场景,告别 synchronized
java·并发工具
有位神秘人2 小时前
Android中Notification的使用详解
android·java·javascript
智慧地球(AI·Earth)3 小时前
DeepSeek架构新探索!开源OCR 2诞生!
架构·ocr
tb_first3 小时前
LangChain4j简单入门
java·spring boot·langchain4j
独自破碎E3 小时前
【BISHI9】田忌赛马
android·java·开发语言
范纹杉想快点毕业3 小时前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
smileNicky4 小时前
布隆过滤器怎么提高误差率
java