【问题标题】:Micronaut Http Basic Auth PromptMicronaut Http 基本身份验证提示
【发布时间】:2020-06-23 12:24:01
【问题描述】:

我一直在寻找一种方法来告诉 Micronaut (1.3.5) 添加“WWW-Authenticate”标头,以防在 http 基本身份验证设置中身份验证失败。 默认情况下,此标头缺失,仅返回状态代码 401。

【问题讨论】:

    标签: java micronaut


    【解决方案1】:

    答案是提供一个自定义的 ExceptionHandler,如下所示:

    
    /**
     * AuthorizationException Handler, which adds header for showing browser basic auth dialogue.
     */
    @Singleton
    @Primary
    public class HttpBasicAuthorizationExceptionHandler
            implements ExceptionHandler<AuthorizationException, MutableHttpResponse<?>> {
    
    
        @Override
        public MutableHttpResponse<?> handle(HttpRequest request, AuthorizationException exception) {
            return Flowable.fromPublisher(reject(exception.isForbidden())).blockingFirst();
        }
    
        /**
         * @param forbidden true if the status is HttpStatus.FORBIDDEN, HttpStatus.UNAUTHORIZED otherwise.
         * @return the http response.
         */
        private Publisher<MutableHttpResponse<?>> reject(boolean forbidden) {
            if (forbidden) {
                return Publishers.just(HttpResponse.status(HttpStatus.FORBIDDEN));
            }
            return Publishers.just(
                    HttpResponse.status(HttpStatus.UNAUTHORIZED)
                            .header(HttpHeaders.WWW_AUTHENTICATE, "Basic")
            );
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-08
      • 2021-03-21
      • 2011-11-12
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2013-09-01
      相关资源
      最近更新 更多