Java 当用户身份验证未经授权时发送自定义响应

Java 当用户身份验证未经授权时发送自定义响应,java,jwt,jwt-auth,quarkus,Java,Jwt,Jwt Auth,Quarkus,我正在遵循quarkus的JWT指南。我想在不允许用户组访问api时发送自定义响应 这是指南中显示的示例 @GET() @路径(“允许的角色”) @允许角色({“回音器”、“订户”}) @生成(MediaType.TEXT\u PLAIN) 允许的公共字符串(@Context SecurityContext ctx){ 主体调用方=ctx.getUserPrincipal(); 字符串名称=调用者==null?“匿名”:调用者.getName(); 布尔值hasJWT=jwt!=null; St

我正在遵循quarkus的JWT指南。我想在不允许用户组访问api时发送自定义响应

这是指南中显示的示例

@GET()
@路径(“允许的角色”)
@允许角色({“回音器”、“订户”})
@生成(MediaType.TEXT\u PLAIN)
允许的公共字符串(@Context SecurityContext ctx){
主体调用方=ctx.getUserPrincipal();
字符串名称=调用者==null?“匿名”:调用者.getName();
布尔值hasJWT=jwt!=null;
String helloReply=String.format(“hello+%s,isSecure:%s,authScheme:%s,hasJWT:%s”,name,ctx.isSecure(),ctx.getAuthenticationScheme(),hasJWT);
返回helloReply;
}

如何知道请求是否未经授权,以便发送自定义响应。

简短回答:现在无法完成。(更新部分的解释)

它看起来像是JEE应用程序,所以可能
或者试试看。 或添加提供程序:

@Provider
公共类CustomReasonNotAuthorizedException实现ExceptionMapper{
公众对响应的回应(未经授权){
返回Response.status(Response.status.UNAUTHORIZED)
.entity(“您的文本”)
.build();
}
}
更新

我检查了源代码并在调试中进行了尝试,执行过程如下所示。因此,您不能更改消息“未授权”

HttpAuthenticator authenticator=identity.getAttribute(HttpAuthenticator.class.getName());
RoutingContext上下文=ResteasyContext.getContextData(RoutingContext.class);
if(验证器!=null&&context!=null){
authenticator.sendChallenge(上下文,null);
}否则{
响应(requestContext,401,“未授权”);
}

但是这可以像抛出新的WebApplicationException(Response.Status.NOT\u FOUND)一样手动抛出但是在我的例子中,在进入函数之前检查角色在源代码中挖掘,我认为这是不可能的@吉钦