【问题标题】:how to get reference to the Method being invoked in jersey如何获取对球衣中调用的方法的引用
【发布时间】:2013-08-11 11:26:37
【问题描述】:

我正在使用 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 PreProcessInterceptorJersey 替代品是什么?

【问题讨论】:

  • 从您的描述来看,使用面向方面的编程范式实现似乎是一项不错的任务。当一个get请求发出时,你拦截它,检查用户并让方法被执行(或不执行)。

标签: java jersey resteasy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2017-07-29
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多