如何使用过滤器在 Spring WebFlux 中验证 headers
How to validate headers in Spring WebFlux using Filters
我是 Spring Webflux 的新手。我想在 Webflux 中实现类似 Filter
的东西。我的确切问题是,我希望某些 Webflux RestController
端点中有两个 headers。如何编写一个过滤器来读取这两个 headers,如果其中任何一个不存在,则将响应发送为 "UNAUTHORIZED"。我看过 WebFilter
。但我不确定如何处理此过滤器中的案例。我还添加了我编写的代码。
public class AuthFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
HttpHeaders headers = request.getHeaders();
// How to send unauthorized response if no headers present
return chain.filter(exchange);
}
}
请帮帮我
这将是最简单的,只是空检查,不知道他们是否会发送空 headers 因为你没有指定任何关于 headers
的细节
@Component
public class AuthFilter implements WebFilter {
final static String KEY_HEADER_1 = "Name of header one";
final static String KEY_HEADER_2 = "Name of header two";
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
HttpHeaders headers = request.getHeaders();
if(headers.get(KEY_HEADER_1) == null || headers.get(KEY_HEADER_2) == null) {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED);
}
return chain.filter(exchange);
}
}
我是 Spring Webflux 的新手。我想在 Webflux 中实现类似 Filter
的东西。我的确切问题是,我希望某些 Webflux RestController
端点中有两个 headers。如何编写一个过滤器来读取这两个 headers,如果其中任何一个不存在,则将响应发送为 "UNAUTHORIZED"。我看过 WebFilter
。但我不确定如何处理此过滤器中的案例。我还添加了我编写的代码。
public class AuthFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
HttpHeaders headers = request.getHeaders();
// How to send unauthorized response if no headers present
return chain.filter(exchange);
}
}
请帮帮我
这将是最简单的,只是空检查,不知道他们是否会发送空 headers 因为你没有指定任何关于 headers
的细节@Component
public class AuthFilter implements WebFilter {
final static String KEY_HEADER_1 = "Name of header one";
final static String KEY_HEADER_2 = "Name of header two";
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
HttpHeaders headers = request.getHeaders();
if(headers.get(KEY_HEADER_1) == null || headers.get(KEY_HEADER_2) == null) {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED);
}
return chain.filter(exchange);
}
}