Java面试题更新 2026-08-05

请说明使用 Spring Cloud Gateway 自定义 GlobalFilter 保护接口的具体实现过程,包括如何编写过滤器、注册顺序以及实现鉴权或限流等防护逻辑。

后端开发编码实现安全意识技术原理JavaRedisSpring Cloud Gateway

考察说明

考查对 Spring Cloud Gateway 自定义 GlobalFilter 的理解和实际编码能力。

回答思路

  1. 【回答框架 1】GlobalFilter 是 Gateway 全局过滤器,对进入网关的所有请求生效,可通过实现 GlobalFilter 和 Ordered 接口来编写自定义过滤器。核心是重写 filter 方法,在链路中执行前置或后置逻辑,并通过 GatewayFilterChain 继续传递请求。
  2. 【回答框架 2】实现鉴权时,在 filter 方法中从 ServerWebExchange 获取请求头或参数,校验 token 等凭据。校验通过则调用 chain.filter(exchange),否则返回 401 响应。可按业务需要设置过滤器优先级,通过 getOrder 方法控制顺序,数值越小越先执行。
  3. 【回答框架 3】限流等保护可通过配合 RequestRateLimiter 或结合 Redis 实现计数器,在过滤器中检查请求频率,超过阈值则返回 429。需注意全局过滤器对所有路由生效,若要精细控制,可实现 GatewayFilter 并绑定具体路由。
  4. 【回答框架 4】实践中需处理响应写入和编码,设置响应状态和 body。还要考虑异常处理,避免过滤器抛出异常导致错误响应。可添加日志记录,便于追踪。
  5. 【关键点 1】实现 GlobalFilter 和 Ordered 接口,重写 filter 方法。
  6. 【关键点 2】从 exchange 获取请求信息,进行鉴权或限流。
  7. 【关键点 3】校验通过调用 chain.filter(exchange),否则返回错误响应。
  8. 【关键点 4】通过 getOrder 控制过滤器执行顺序。
  9. 【易错点 1】全局过滤器对所有请求生效,需注意性能影响。
  10. 【易错点 2】响应写入时需正确设置 Content-Type 并避免缓冲问题。
  11. 【易错点 3】校验逻辑不要只依赖显式参数,应结合安全上下文。