0

正在使用jersey. 我想为此 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

RestEasyJersey替代品是什么? PreProcessInterceptor

4

1 回答 1

2

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

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

于 2013-08-11T16:15:38.247 回答