网关通过globalfilter统一校验token,websocket需自定义过滤器并在路由中显式绑定,校验后应透传用户信息至下游服务。

前端并发请求本身不参与网关的 Token 校验逻辑,网关过滤器运行在服务端(Spring Cloud Gateway),无法由前端“利用通道多态”主动触发或控制其执行方式。“通道多态”也不是 Spring Cloud Gateway 或标准 HTTP/Reactive 编程中的术语,当前技术栈中不存在该概念——它不属于 Java、Reactor、Netty、HTTP 协议或 Spring 生态的规范表述。
真正需要关注的是:网关如何统一、高效、可靠地校验所有进来的 Token
这不是前端的事,而是后端网关层的设计问题。核心在于用好 GlobalFilter + 有序执行 + 非阻塞校验:
- 所有 HTTP 请求(含并发)都会经过网关的过滤器链,无需前端“并发配合”,网关天然支持高并发响应式处理
- 自定义
TokenCheckFilter实现GlobalFilter和Ordered,设置getOrder()为较小值(如-100),确保它在路由转发前最早执行 - 校验逻辑必须非阻塞:从
ServerWebExchange提取Authorization头 → 截取 Bearer Token → 调用redisTemplate.hasKey(realToken)(Redis 响应式操作)→ 成功则放行,失败则写入 401 响应并终止链 - 放行路径(如
/login-service/doLogin)需白名单硬编码或配置化,避免登录接口也被拦截
WebSocket 场景要特别注意:GlobalFilter 默认不生效
WebSocket 握手请求(ws:// 或 wss://)会被 WebsocketRoutingFilter(order = -1)直接接管,跳过所有 GlobalFilter。正确做法是:
前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。
- 定义一个继承
AbstractGatewayFilterFactory的局部过滤器(如AuthWebSocketFilter) - 在路由配置中显式绑定,且
order设为-2,确保在WebsocketRoutingFilter之前执行 - 校验失败时立即调用
response.setStatusCode(401)并返回Mono.empty(),阻止握手升级 - 推荐前端通过 query 参数传 token(如
ws://gateway/ws?token=xxx),因 Header 在 WebSocket 握手阶段可能不可靠
下游服务怎么拿到用户身份?别只校验,还要透传
Token 校验通过后,建议把解析出的用户 ID、角色等信息附加到请求头,供下游微服务使用:
- 在过滤器中用
AppJwtUtil.getClaimsBody(token)解析 JWT payload - 构造新请求:
ServerHttpRequest mutatedRequest = request.mutate().header("X-User-Id", userId).header("X-User-Roles", roles).build() - 再调用
exchange.mutate().request(mutatedRequest).build()继续链路
不复杂但容易忽略:校验不是终点,透传上下文才是微服务鉴权落地的关键一环。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










