news 2026/3/1 7:14:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第十三课:权限系统如何设计?——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 的关系

两者的关系可以理解为:

RBACSpring 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 到可用(含核心代码)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 15:19:35

2026-02-04 校⻓公开直播

一、开年解读 还有一点原因是最近发现有些股票确实挺好 一直强调淡化指数,关注板块; 三月之前由于特朗普会有来华预期,所以在访华之前中美博弈相关风险影响不会很大;

作者头像 李华
网站建设 2026/2/25 1:56:22

FX5U与JE-C伺服通讯:从入门到实战

FX5U和je-C伺服通讯案例和学习资料,绝无仅有。物超所值 最近在工作中接触到了三菱FX5U PLC与JE-C伺服电机的通讯配置,感觉这个过程既有趣又有挑战性。作为一个刚入行的工程师,一开始面对伺服系统时,确实有点摸不着头脑&#xff0…

作者头像 李华
网站建设 2026/2/15 7:30:55

阿里开源Qwen3-Coder-Next,80B参数仅激活3B的MoE顶尖编程助手

阿里刚刚开源了极强的小型 MoE 代码模型 Qwen3-Coder-Next。Qwen3-Coder-Next 以 800 亿总参数量和仅 30 亿的激活参数量,在代码生成与智能体任务中展示了极高的效能与潜力。尽管激活参数规模很小,在 SWE-Bench(Verified、Multilingual、Pro&…

作者头像 李华
网站建设 2026/2/26 13:35:13

为什么你的年度计划只值两个字“要钱”?这份“自检清单”能救命

每年这个时候,数据团队最怕两件事: 第一,写年度计划时觉得自己是公司的核心大脑。 第二,讲年度计划时发现自己在老板眼里只是个成本中心。 你写了20页的“数仓重构、湖仓一体、AI底座”,老板翻完只问了一句&#xf…

作者头像 李华
网站建设 2026/2/26 16:30:39

高效索引之HNSW_SQ:如何同时兼顾RAG的速度、召回率与成本

在RAG在内的高维向量检索场景里,我们常常会陷入一个不可能三角:硬件不变的情况下,想要更快的查询速度,就得牺牲一部分召回率;如果想要召回率与速度同时兼顾,就得增加硬件预算……那么,有没有一种…

作者头像 李华