第十三课:权限系统如何设计?——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 到可用(含核心代码)

相关推荐
予枫的编程笔记1 天前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
上官-王野1 天前
公务员暂停工伤保险
java
亓才孓1 天前
【反射机制】
java·javascript·jvm
you-_ling1 天前
线程及进程间通信
java·开发语言
莫寒清1 天前
Apache Tika
java·人工智能·spring·apache·知识图谱
昱宸星光1 天前
spring cloud gateway内置网关filter
java·服务器·前端
麻瓜生活睁不开眼1 天前
Android 14 开机自启动第三方 APK 全流程踩坑与最终解决方案(含 RescueParty 避坑)
android·java·深度学习
绝无仅有1 天前
Java多线程并发问题解决方案全解析
后端·面试·架构
够快云库1 天前
制造业非结构化数据治理:架构解析与实战复盘
大数据·人工智能·架构·企业文件安全
当战神遇到编程1 天前
LinkedList深入讲解
java·intellij-idea