java - 如何在 jax-rs 的 ContainerRequestFilter 中获取资源方法注释

标签 java rest permissions jax-rs cxf

我写了一个类扩展 ContainerRequestFilter 来进行权限检查。如何获取匹配方法的注释以进行权限检查。

@javax.ws.rs.ext.Provider
public class AuthorizationRequestFilter implements ContainerRequestFilter {
    public void filter(ContainerRequestContext requestContext) throws IOException {
    // how can I get resources' methods' annotation here? 
    // from the resource below , I want to checkout whether the target matched method contains the @ReadPermission annotation
    }
}

@Path("/region")
public class Region {
   @POST
   @Path("/{region_id}")
   @Produces({MediaType.APPLICATION_JSON , MediaType.APPLICATION_XML})
   @ReadPermission
   public String getRegion() {
      return null;
   }
}

最佳答案

您可以使用以下代码(CXF专用):

 public class AuthorizationRequestFilter implements ContainerRequestFilter {
    public void filter(ContainerRequestContext requestContext) throws IOException {

        Message message = JAXRSUtils.getCurrentMessage();
        OperationResourceInfo operation = message.getExchange().get(OperationResourceInfo.class);
        Method m = operation.getMethodToInvoke();
        boolean hasAnnotation =  m.getAnnotation(ReadPermission.class) != null;
    }
}

或者这个(JAX-RS的通用)

@Provider
public class AuthorizationRequestFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;

    @Override
    public void filter(final ContainerRequestContext requestContext) throws IOException {
        resourceInfo.getResourceMethod().getAnnotation(ReadPermission.class);
    }
}

关于java - 如何在 jax-rs 的 ContainerRequestFilter 中获取资源方法注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670839/

相关文章:

java - Android 文件访问问题

java - Spring Boot错误处理代码404空白页

java - 使用 Spring Boot 和 WebSphere 9.0.0.7 进行 JNDI 配置

php - 如何使用 Rest API 在 Processmaker 3.0 中创建注销功能?

ios - 我们可以在 iOS 应用程序中按需添加 Twitter 权限吗?

ruby-on-rails - 禁止访问 您无权访问 Bitnami Ruby Rails

java - 如何禁止/取消禁止登录尝试失败的 IP

java - 解析日期时出现异常

java - 来自 @PathVariable Java Spring 的不完整文本

web-services - Web 服务中序列化的成本