在泽西岛资源筛选器工厂中获取实际参数值
2022-09-02 14:12:42
我想使用 Jersey 在我的 REST 服务中实现自定义授权。此自定义授权检查方法的注释以及方法接收的实际参数。
我的 jax-rs 注释方法如下所示:
@GET
@Path("customers")
@Requires(Role.CustomerManager)
public Customer getCustomer(@ParseFromQueryString @CheckPermission final Customer customer) {
// ...
}
是一个注释,指示 Jersey(通过可注入提供程序)从查询字符串中取消编组 。其代码如下所示:@ParseFromQueryString
Customer
public class QueryStringCustomerInjectable implements Injectable<Customer> {
public Customer getValue() {
final Customer customer = new Customer();
// ... a UriInfo was injected using the @Context annotation
// ... extract parameters from QueryString and use setters
return customer;
}
}
注释指示我的自定义授权者要检查客户的权限。某些用户可以访问某些客户的信息。同样,注释具有调用程序应具有的角色。这些不是java的安全角色(字符串),而是枚举值。@CheckPermission
@Requires
使用泽西岛作为起点,我已经能够知道将调用哪种方法。但是,我仍然没有弄清楚如何确定哪些参数将实际用于调用该方法。ResourceDebuggingFilter
在我的头顶上,我可以想到两个解决方法:
- 使用 Guice + Jersey 的方法拦截器。
- 在 中编写此逻辑,但这似乎有点草率。这将是一个做太多事情的课程。
QueryStringCustomerInjectable
然而,我真的想只使用泽西岛/ JAX-RS来做到这一点。我觉得我离得很近!
想法?指针?
谢谢!