【问题标题】:How to validate headers in Spring WebFlux using Filters如何使用过滤器验证 Spring WebFlux 中的标头
【发布时间】:2019-08-20 07:47:16
【问题描述】:

我对 Spring Webflux 很陌生。我想在 Webflux 中实现 Filter 之类的东西。我的确切问题是,我希望某些 Webflux RestController 端点中有两个标头。如何编写将读取这两个标头的过滤器,如果其中任何一个不存在,则将响应发送为“未授权”。我看过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);
        }

    }

请帮帮我。

【问题讨论】:

    标签: spring-boot spring-webflux


    【解决方案1】:

    这将是最简单的,只是空检查,不知道他们是否会发送空标头,因为您没有指定有关标头的任何详细信息

    @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);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 2019-12-16
      • 2011-06-21
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      相关资源
      最近更新 更多