当访问令牌在标头中无效时,我想自定义 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();
}
}
但是当我执行我的代码时,上面的异常映射器没有执行,而是在控制台中出现以下日志:
io.qua.oid.run.OidcProvider
: (vert.x-eventloop-thread-1) 令牌验证失败:JWT 不再有效 - 声明值。
如何在 quarkus oidc 中自定义 401/403 状态码 msg。