Java Micronaut Http基本身份验证提示符
我一直在寻找一种方法,告诉Micronaut(1.3.5)添加“WWW Authenticate”头,以防http基本身份验证设置中的身份验证失败。Java Micronaut Http基本身份验证提示符,java,micronaut,Java,Micronaut,我一直在寻找一种方法,告诉Micronaut(1.3.5)添加“WWW Authenticate”头,以防http基本身份验证设置中的身份验证失败。 默认情况下,缺少此标题,只返回状态代码401。答案是提供一个自定义异常处理程序,如下所示: /** * AuthorizationException Handler, which adds header for showing browser basic auth dialogue. */ @Singleton @Primary public
默认情况下,缺少此标题,只返回状态代码401。答案是提供一个自定义异常处理程序,如下所示:
/**
* 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")
);
}
}
/**
*AuthorizationException处理程序,它添加用于显示浏览器基本身份验证对话的标题。
*/
@独生子女
@初级的
公共类HttpBasicAuthorizationExceptionHandler
实现ExceptionHandler句柄(HttpRequest请求、AuthorizationException异常){
返回Flowable.fromPublisher(拒绝(exception.isForbidden()).blockingFirst();
}
/**
*如果状态为HttpStatus.forbidden,则@param forbidden true;否则为HttpStatus.UNAUTHORIZED。
*@返回http响应。
*/
私人出版商