如何引用在球衣中调用的方法

时间:2013-08-11 11:26:37

标签: java jersey resteasy

我正在使用jersey开发基于 REST 的Web服务。我想为此Web服务实现基于角色的授权。

现在假设我有一个方法getUsers()

@RolesAllowed("ADMIN")
@Path("\Users")
@GET
public void getUsers() {
  // some code.
}
将为getUsers()请求调用

GET \Users

收到请求后,我将验证客户端使用凭据并确定其角色,然后我必须决定让请求通过或拒绝。

获取凭据和验证用户不是问题,我需要一种方法来引用将为请求执行的方法。

这样我就可以检查它的@RolesAllowed注释来授予或拒绝访问。

RestEasy我们有PreProcessInterceptor接口,其中包含以下方法:

 preProcess(HttpRequest request, ResourceMethod methodInvoked)

ResourceMethod's getMethod()为我们提供了在我们的案例getUsers()中调用的方法的参考。使用此Method引用,我可以检查注释是否有用。

现在我的问题是如何在Jersey中完成?

泽西替代 RestEasy PreProcessInterceptor是什么?

1 个答案:

答案 0 :(得分:2)

您可以注入ExtendedUriInfo并致电getMatchedResourceMethod。这也适用于(后匹配)过滤器,因此您应该能够使用JAX-RS ContainerRequestFilter

然后调用ResourceMethod。getInvocable()。getHandlingMethod(),你可以检查你需要的东西:)