【发布时间】: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 PreProcessInterceptor 的 Jersey 替代品是什么?
【问题讨论】:
-
从您的描述来看,使用面向方面的编程范式实现似乎是一项不错的任务。当一个get请求发出时,你拦截它,检查用户并让方法被执行(或不执行)。