我正在使用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
是什么?
答案 0 :(得分:2)
您可以注入ExtendedUriInfo并致电getMatchedResourceMethod。这也适用于(后匹配)过滤器,因此您应该能够使用JAX-RS ContainerRequestFilter。
然后调用ResourceMethod。getInvocable()。getHandlingMethod(),你可以检查你需要的东西:)