Gateway 鉴权场景:网关统一鉴权 + 业务应用决定放行规则

作者:超梦dasgg日期:2026/5/30

目录

一、核心设计原则(一句话总结)

二、具体实现方案(最主流、最推荐)

1. 整体流程

2. 具体技术实现(Spring Cloud Gateway 为例)

(1)业务服务:定义注解 + 扫描接口路由

(2)业务服务:启动时自动上报路由权限规则

(3)Gateway:拉取规则 + 全局过滤器统一鉴权

三、更轻量的简化方案(中小型项目常用)

四、为什么要这么设计?(面试加分回答)

五、面试标准回答(你可以直接背)

总结


这是微服务架构中最标准、最常用的鉴权方案Gateway 只做「鉴权执行」,业务服务只做「放行规则配置」,职责完全解耦

本文直接给你讲企业落地的通用实现方案,清晰、可直接面试回答,也能直接开发用。


一、核心设计原则(一句话总结)

Gateway 不关心业务,只做 “校验 token 是否有效 + 是否需要放行”; 业务服务定义 “哪些接口公开、哪些需要权限”,把规则告诉 Gateway。


二、具体实现方案(最主流、最推荐)

1. 整体流程

  1. 业务服务(如订单、用户服务):在自己的接口上标注权限注解(如 @Anonymous 免鉴权、@RequireRole("ADMIN"))。
  2. 业务服务启动时:把接口权限规则自动上报到配置中心 / 数据库。
  3. Gateway 实时拉取规则:知道哪些路径不需要登录、哪些需要什么角色 / 权限。
  4. 请求进入 Gateway
    • 匹配规则 → 公开接口:直接放行
    • 私有接口:校验 Token → 无效直接拦截 → 有效则转发

2. 具体技术实现(Spring Cloud Gateway 为例)

(1)业务服务:定义注解 + 扫描接口路由

业务服务自己决定哪些接口不用登录:

1// 免登录注解(业务服务定义)
2@Target({ElementType.METHOD})
3@Retention(RetentionPolicy.RUNTIME)
4public @interface Anonymous {
5}
6
7// 控制器里使用
8@RestController
9@RequestMapping("/user")
10public class UserController {
11
12    // 登录接口  业务决定免鉴权
13    @Anonymous
14    @PostMapping("/login")
15    public Result login() {}
16
17    // 获取用户信息  需要鉴权
18    @GetMapping("/info")
19    public Result info() {}
20}
21

(2)业务服务:启动时自动上报路由权限规则

项目启动时,扫描所有 @Anonymous@RequirePermission 注解, 把 URL + 是否需要鉴权 + 需要的权限 上报到:

  • Nacos / Apollo(配置中心)
  • 或 Redis / MySQL

示例上报格式(Gateway 能读懂):

1[
2  { "url": "/user/login", "auth": false },
3  { "url": "/user/info", "auth": true, "roles": ["USER"] },
4  { "url": "/order/**", "auth": true, "perms": ["order:query"] }
5]
6

(3)Gateway:拉取规则 + 全局过滤器统一鉴权

Gateway 只做一件事: 拿请求路径 → 匹配规则 → 决定是否校验 Token

核心过滤器伪代码:

1@Component
2public class AuthFilter implements GlobalFilter {
3
4    @Autowired
5    private AuthRuleService authRuleService; // 拉取业务服务上报的规则
6
7    @Override
8    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
9        // 1. 获取当前请求路径
10        String path = exchange.getRequest().getPath().toString();
11
12        // 2. 查询规则:是否需要鉴权(由业务服务决定!)
13        AuthRule rule = authRuleService.getRule(path);
14
15        // 3. 业务说不需要鉴权  直接放行
16        if (!rule.isAuth()) {
17            return chain.filter(exchange);
18        }
19
20        // 4. 需要鉴权  Gateway 执行校验(Token、签名、过期等)
21        String token = exchange.getRequest().getHeader("token");
22        if (!JwtUtil.verify(token)) {
23            return unauthorizedResponse(exchange);
24        }
25
26        // 5. 校验通过  转发
27        return chain.filter(exchange);
28    }
29}
30

三、更轻量的简化方案(中小型项目常用)

如果不想做「自动上报」,可以用配置文件模式,同样满足: 业务决定放行规则,Gateway 只执行

  1. 每个业务服务提供一个 white-list.yml
1anonymous:  
2  urls:  
3    - /user/login  
4    - /file/upload/**  
  1. 交给 Gateway 加载
  2. Gateway 统一拦截、放行、鉴权

优点:简单、稳定、无侵入。 缺点:不能自动扫描注解,需要手动维护(但很多公司就这样用)。


四、为什么要这么设计?(面试加分回答)

  1. 职责分离
    • Gateway:只做通用安全拦截(无业务逻辑)
    • 业务服务:只做自身接口权限定义
  2. 扩展性强 新增服务 → 只需要业务配置规则,Gateway 完全不用改
  3. 统一安全入口 所有鉴权收口在网关,避免业务服务漏写鉴权
  4. 性能更好 非法请求在网关层直接拦截,不会打到后端服务

五、面试标准回答(你可以直接背)

我们的方案是:Gateway 统一负责鉴权逻辑的执行,业务服务负责定义哪些接口需要鉴权、哪些不需要。

具体实现:

  1. 业务服务通过注解(如 @Anonymous)标记公开接口;
  2. 服务启动时自动扫描接口,把权限规则上报到配置中心或 Redis;
  3. Gateway 实时拉取所有服务的权限规则;
  4. 请求进入网关后,根据规则判断是否需要鉴权,需要则校验 Token,不需要直接放行。

这种模式做到了权限控制在业务,鉴权执行在网关,职责清晰、易于维护。


总结

  1. 控制权分离:Gateway 执行鉴权,业务服务定义规则
  2. 实现方式:注解 + 规则上报 + Gateway 全局过滤器
  3. 优点:解耦、统一入口、易扩展、安全
  4. 两种方案:自动上报(大型项目)、配置白名单(中小型项目)

Gateway 鉴权场景:网关统一鉴权 + 业务应用决定放行规则》 是转载文章,点击查看原文


相关推荐


保姆级教程:零成本在本地跑AI大模型_Ollama
凤年徐2026/5/8

保姆级教程:零成本在本地跑 AI 大模型——Ollama 从安装到实战 手把手教你,用自己的电脑跑起来满血版 Qwen/DeepSeek/Llama,不需要 API Key,不需要云服务器 预计完成时间: 2-3 小时 所需技能: 会用命令行(3条命令够了) 适合人群: 想玩 AI 大模型但不想花钱、担心隐私泄露、喜欢折腾的同学 前言:为什么要在本地跑大模型? 用过 ChatGPT、DeepSeek 的同学应该知道,每次调用都是要花钱的——DeepSeek-V3 每次 A


我让 AI 当了回老师,把 Claude Code 从头到尾盘了一遍 🔥
LinDaiDai_霖呆呆2026/4/29

前言 你盼世界,我盼望你无bug。Hello 大家好,我是霖呆呆! 最近尝试在用 Claude Code 写项目,建仓库、修 bug、代码审查什么的都用它。但说实话,用是用了,总感觉自己就是个"面向弹窗编程"选手 —— 它弹窗我就点确认,它问我就说好,至于它到底是怎么运作的?权限模式有几种?Hooks 能干嘛?emmm...😅 直到我发现三元写了个 skill(名为 sigma) ,安装完后在 claudeCode 里使用 /sigma 你想学习的知识 命令,它就能变身 AI 1v1 家教,


拒绝低效!这款神器,让你的终端效率起飞 | 深度解析 fzf 终极指南
GetcharZp2026/4/20

还在手动敲 cd 和 ls?还在繁琐的 history 中翻找命令?是时候换个方式工作了。一篇文章带你彻底掌握命令行模糊找回神器 fzf,从安装到进阶玩法,助你效率翻倍! 身为开发者,我们每天大部分的时间都花在了终端(Terminal)里。不论是切换目录、搜索文件,还是翻阅历史命令,这些细碎的操作如果效率低下,积少成多便会吞噬掉大量专注力。 你是否也曾经历过: 想找一个深层目录下的文件,却记不清完整路径,只能不断 ls 确认? 按 Ctrl+R 搜索历史命令,结果搜出来的不是自己想要的?


OpenClaw实操指南13|用AI接管飞书多维表格:自动建表、写数据、做分析,一条指令搞定
Rubin智造社2026/4/12

飞书多维表格是很多团队的数据中枢——项目管理、内容选题、客户跟进、数据分析,全在里面。 但维护它是个体力活:手动建字段、逐条录数据、定期整理……重复劳动大量消耗精力。 这篇教程教你用OpenClaw的lark全套技能,把飞书多维表格的常见操作全部交给AI。 一条指令建表,一条指令批量写数据,一条指令做分析汇总。你只需要告诉AI你要什么,剩下的它来做。 核心概要 这篇解决什么问题? 安装并配置lark全套技能,实现飞书多维表格的AI自动化操作:建表、字段管理、数据读写、视图


别再把 LangChain 当成 API 胶水:Runnable 才是把 AI 流程工程化的关键接口
swipe2026/4/4

很多人第一次接触 LangChain,会把它理解成一组“帮你调模型”的工具类:PromptTemplate 负责拼 prompt,ChatOpenAI 负责调模型,OutputParser 负责解析结果。这样理解没错,但只对了一半。 真正到了工程里,问题很快就不是“怎么调一次模型”,而是“怎么把一条会持续演化的 AI 流程组织好”。 比如一个看起来简单的企业问答助手,往往很快就会长成这样: 先清洗用户问题 再决定这是闲聊、任务型问题,还是知识问答 不同类型走不同 prompt 有的分支要结构化


【35天从0开始备战蓝桥杯 -- Day6】
小年糕是糕手2026/3/26

🫧个人主页:小年糕是糕手 💫个人专栏:《C++》《Linux》《数据结构》《C语言》 🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来! 目录 一、进制转换 1.1、二进制转十进制 1.2、十进制转二进制 1.3、二进制转八进制 1.4、二进制转十六进制 1.5、原码、反码、补码 练习 1°10 进制转 x 进制 2°x 进制转 10 进制 3°进制转换1 4°进制转换2 二、位运算操作符 2.1、左移操作符 2.2、右移操


【养虾日记】Openclaw操作浏览器自动化发文
卷福同学2026/3/18

用QClaw操作本地浏览器,登录自媒体平台,实现自动发文 1.更新 Openclaw在3.13版本更新后,加入了Chrome DevTools MCP 官方支持,就是可以控制浏览器了。 Openclaw虽然自带内置浏览器,但是打开后完全没有登录信息和安装的扩展插件,这次升级后就能用上我们自己的浏览器了,比较方便。 这里小卷用QClaw做演示,如何让它操作浏览器干活 2.打开浏览器调试 我们需要用到Chrome浏览器 打开chrome://inspect/#remote-debugging


OpenClaw 卸载教程,一篇讲透
不惑_2026/3/10

有些朋友尝鲜体验后,觉得不太适合自己,想要完全卸载却不知道如何操作。以下是完整的卸载步骤: 1. 打开终端,输入以下命令: openclaw uninstall 2. 使用鼠标上下移动光标,按空格键勾选所有选项,然后按回车键确认。 3. 选择 yes 并按回车,此命令会自动删除 OpenClaw 的工作目录。 4. 卸载 npm 包: 如果使用 npm 安装:npm rm -g openclaw 如果使用 pnpm 安装:pnpm remove -g openclaw 如果使用 bun


弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
刘发财2026/3/2

欢迎转载文章 在前端开发中,“把网页变成 PDF”是个老生常谈的需求。无论是生成发票、报告还是简历,用户总希望点一下按钮就能带走一份格式完美的文档。 目前主流的前端html转pdf方案是通过html2canvas将网页渲染成canvas,再通过jsPDF将canvas转换为pdf。代表方案就是 html2pdf.js,npm包周下载量达到了80万,为广大开发者所接受。但是因为它基于html2canvas和jsPDF,会有一些无法解决的问题,比如: 生成速度慢 生成的pdf文件体积大 生成的pd


【大模型面试突击】03_大模型架构演进与对比
香芋Yu2026/2/21

2026大模型面试:大模型架构演进与对比必考28题(含答案) 精选自176道采集题目,保留最高频最核心的28题 | 难度:⭐基础 ⭐⭐进阶 ⭐⭐⭐深入 一、GPT与LLaMA系列演进(7题) 1. ⭐⭐ [字节/高频] GPT系列从GPT-1到GPT-4的架构演进主要脉络是什么? 一句话秒答: 四代GPT走的是一条"预训练范式→暴力出奇迹→多模态融合"的进化路线,每一步都在重新定义规模的上限。 展开来说: GPT-1其实干了一件很简单但当时很大胆的事——把Transformer Decod

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读