版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}
调用这个方法就可以实现。