gpt4 book ai didi

java - 在 Jersey ResourceFilterFactory 中获取实际参数值

转载 作者:IT老高 更新时间:2023-10-28 21:02:58 25 4
gpt4 key购买 nike

我想使用 Jersey 在我的 REST 服务中实现自定义授权。此自定义授权检查方法上的注释以及实际参数方法接收。

我的 jax-rs 注释方法如下所示:

@GET
@Path("customers")
@Requires(Role.CustomerManager)
public Customer getCustomer(@ParseFromQueryString @CheckPermission final Customer customer) {
// ...
}

@ParseFromQueryString 是一个注释,指示 Jersey(通过 Injectable 提供程序)从查询字符串中解码 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;
}
}

@CheckPermission 注释指示我的自定义授权者要检查客户的权限。一些用户可以访问一些客户的信息。类似地,@Requires 注释扮演了调用者应该拥有的角色。这些不是 java 的安全角色(字符串),而是枚举值。

使用 Jersey 的 ResourceDebuggingFilter 作为起点,我已经能够知道将调用哪个方法。但是,我仍然没有弄清楚如何确定实际使用哪些参数来调用该方法。

在我的脑海中,我可以想到两个解决方法:

  1. 使用 Guice + Jersey 的方法拦截器。
  2. QueryStringCustomerInjectable 中编写此逻辑,但这似乎有点草率。这将是一个类做太多

然而,我真的想只使用 Jersey/JAX-RS 来做到这一点。我觉得我很亲近!

想法?指针?

谢谢!

最佳答案

您应该使用 FiltersInterceptors 来处理有关方法的所有信息。 see Jersey Filter and Interceptors

关于java - 在 Jersey ResourceFilterFactory 中获取实际参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6304169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com