【发布时间】:2012-08-04 20:34:37
【问题描述】:
我正在使用 JAX-RS/Jersey 开发 WebService。
我设置了一个ContainerRequestFilter,其目的是验证用户身份。我只需要通过身份验证保护一些路径,其余的人人都可以使用。
我想通过我的 ContainerRequestFilter 中的 ExtendedUriInfo 检索matchedResources /matchedResults,以便我可以检查路径是否应该受到保护。有没有办法创建一个过滤器,在填充 ExtendedUriInfo 之后,但在调用匹配的资源类和方法之前调用?
【问题讨论】:
-
听起来您正在重新发明一点 Java EE!如果您的 Web 服务后面没有 EJB,请考虑添加一个。您可以随意使用角色进行注释。
-
感谢理查德的建议。我还没有过多地研究角色,但我的印象是角色只能与配置的 auth-method 一起使用。我有一个 login 方法,在用户登录后,他/她使用 accessToken + userId 对与 WebService 进行通信。
-
诚然,我通过 Web 服务进行身份验证的经验很薄弱。我确实知道通过 servlet 接口有一个 API 可用于登录用户 - 侧步验证方法。简而言之,servlet 可以“编写自己的”身份验证方法。我一直认为网络服务也有这种情况。
-
由于您使用的是过滤器,因此您应该可以使用该机制:请参阅docs.oracle.com/javaee/6/api/javax/servlet/http/…, java.lang.String)
标签: java annotations jersey jax-rs