在 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的NettyConfiguration