spring cloud gateway自定义filter重定向

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37616173/article/details/81907374

在自定义filter里返回值是一个Mono<Void> 如果业务处理发现数据有问题就要返回

这时就有了第一种实现,retrun 一个 

Mono.empty();

这种处理办法显然是有问题的,用户根本无从知道他的数据问题在哪。你返回Mono<Void>没有任何意义。只是让fliter停止了而已。

这时就要去查看源码里怎么写的了,我发现了

org.springframework.cloud.gateway.filter.factory.RedirectToGatewayFilterFactory这个类里的一个方法。

它向responseheader里set了Location 然后return 了response.setComplete();  而这个方法正好返回一个

我们可以使用这个方法实现页面的重定向。

  /**
     * 失败返回message提示用户
     * @param exchange
     * @param url
     * @return
     */

    private Mono<Void> fallBack(String url,ServerWebExchange exchange){
        ServerHttpResponse response = exchange.getResponse();
        response.setStatusCode(HttpStatus.SEE_OTHER);
        response.getHeaders().set("Location", "你的url");
        return exchange.getResponse().setComplete();
    }

调用这个方法就可以实现。

猜你喜欢

转载自blog.csdn.net/qq_37616173/article/details/81907374