我想在我的WebFilter中执行如下操作,可以选择绕过后续的过滤器和rest控制器:
if(shouldRedirect(exchange)){ //do redirect }else if(!canAccess(exchange)){ //return a 403 response }else{ chain.filter(exchange); }
谢谢
从技术上讲,合同规定过滤器必须返回 Mono<Void> ,在处理交换(请求+响应)时完成。
Mono<Void>
照常 WebFilter 对请求/响应执行某些操作,然后将交换转发到链中的下一个筛选器。但你也可以单方处理交换,并称之为完成。
WebFilter
在这个示例中,我们设置状态代码并调用response done。
class MyFilter implements WebFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { ServerHttpResponse response = exchange.getResponse(); response.setStatusCode(HttpStatus.NOT_FOUND); return response.setComplete(); } }