根据Quarkus gRPC 文档,必须generate-code为quarkus-maven-plugin. 不过我还没有发现Quarkus Gradle插件是否实现了相应的功能。
问题:如何使用 Gradle 构建 Quarkus gRPC 项目?
我想在标头中访问令牌无效时自定义 401/403 状态代码。我创建了一个异常映射器,如下所示:
import io.quarkus.security.AuthenticationFailedException;
import org.jose4j.json.internal.json_simple.JSONObject;
import javax.annotation.Priority;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider//register as JAXRS provider
@Priority(1)
public class UnAuthorizedExceptionMapper implements ExceptionMapper<AuthenticationFailedException> {
@Override
public Response toResponse(AuthenticationFailedException exception) {
System.out.println("I m here:"+exception);
JSONObject ob=new JSONObject();
ob.put("errorCode",401);
ob.put("msg","Invalid access token");
return Response.status(Response.Status.UNAUTHORIZED)
.entity(ob.toJSONString())
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我执行代码时,上面的异常映射器不会执行,而是控制台中出现以下日志:
io.qua.oid.run.OidcProvider: (vert.x-eventloop-thread-1) 令牌验证失败:JWT 不再有效 - 声明值。
如何在 quarkus oidc 中自定义 401/403 状态代码消息。