要实现的功能是:请求的参数里面必须有 ?name=男 filters: - CheckAuth=fox,男
实现的方案:
@Component @Slf4j public class CheckAuthGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory { @Override public GatewayFilter apply(NameValueConfig config) { return (exchange, chain) -> { String name = exchange.getRequest().getQueryParams().getFirst("name"); log.info("调用CheckAuthGatewayFilterFactory===" + config.getName() + ":" + config.getValue()); if(config.getValue().equals(name)){ return chain.filter(exchange); }else{ exchange.getResponse().setStatusCode(HttpStatus.NO_CONTENT); return exchange.getResponse().setComplete(); } }; } }