Java bean验证后调用的拦截器
我有以下RESTful web服务:Java bean验证后调用的拦截器,java,rest,jax-rs,interceptor,bean-validation,Java,Rest,Jax Rs,Interceptor,Bean Validation,我有以下RESTful web服务: @PermitAll @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Interceptors(AuthorizationInterceptor.class) public JsonObject addUtente(@QueryParam("token") String token,
@PermitAll
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Interceptors(AuthorizationInterceptor.class)
public JsonObject addUtente(@QueryParam("token") String token,
@Valid UtenteDTO utenteDTO){
}
AuthorizationInterceptor
包含一个用@AroundInvoke
注释的方法。在侦听器调用之前,对utedto
对象进行Bean验证。这是一个问题,因为令牌和角色验证是在拦截器中实现的,它必须是要执行的第一个控件
在bean验证过程之前,如何调用
AuthorizationInterceptor
中的方法?您是否使用基于CDI的拦截器?您是否尝试过@Priority
?是的,我正在使用基于CDI的拦截器。@Priority
是否只有在方法有多个拦截器的情况下才有用?我没有找到拦截器的解决方案。我将AuthorizationInterceptor作为ContainerRequestFilter
的一个实现。我用@Provider和@Authorize(自定义接口)注释了这个类。带有@Authorize注释的REST服务将接受令牌和角色验证。这发生在bean验证调用之前。验证作为拦截器执行。您使用的是@Provider
这一事实让我觉得您认为您使用的是CDI拦截器,但实际上您使用的是JAX-RS拦截器。现在我使用JAX-RS过滤器,因为它们尊重我想要的优先级。