在 Spring Cloud Gateway 中禁止未经身份验证的请求

Posted

技术标签:

【中文标题】在 Spring Cloud Gateway 中禁止未经身份验证的请求【英文标题】:Forbid Unauthenticated requests in Spring Cloud Gateway 【发布时间】:2019-05-20 01:41:07 【问题描述】:

我已经在 Spring Cloud Gateway 中实现了自定义预过滤器,它允许经过身份验证的请求通过下游流程。我想要的是,如果请求未经身份验证,则返回 401 UNAUTHORIZE 状态响应并停止下游处理。能不能实现这个spring cloud gateway。

请帮忙。

我的过滤代码如下

public class ValidUserFilter implements GatewayFilterFactory 

  @Override
  public GatewayFilter apply(Object config) 
    return (exchange, chain) -> 
      ServerHttpRequest request = exchange.getRequest();

      if (isValidRequest(request)) 
        // Allow processing
       else 
      // set UNAUTHORIZED 401 response and stop the processing
      

      return chain.filter(exchange);
    ;
  

配置如下:

  - id: myroute
            uri: http://localhost:8080/bar
            predicates:
            - Path=/foo/**
            filters:
            - ValidUserFilter

【问题讨论】:

【参考方案1】:

SetStatusGatewayFilterFactory中的代码

// set UNAUTHORIZED 401 response and stop the processing
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();

【讨论】:

现在可以在这里找到github.com/spring-cloud/spring-cloud-gateway/blob/main/…

以上是关于在 Spring Cloud Gateway 中禁止未经身份验证的请求的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud gateway 某些路由中跳过全局过滤器

spring cloud gateway 的执行流程

聊聊spring cloud gateway的NettyConfiguration

Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)

Spring Cloud Gateway集成

在同一个项目中实现 Spring Cloud Gateway