首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Micronaut Http Basic Auth提示

Micronaut Http Basic Auth提示
EN

Stack Overflow用户
提问于 2020-06-23 20:24:01
回答 1查看 200关注 0票数 1

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

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 20:24:01

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

代码语言:javascript
复制
/**
 * 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")
        );
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62534662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档