Joh*_*n B 12 java annotations jax-rs jersey
我正在使用JAX-RS/Jersey开发WebService.
我已经设置了一个ContainerRequestFilter,其目的是验证用户身份.我只需要通过身份验证保护一些路径,其余的都可以供所有人使用.
我想通过我的ContainerRequestFilter中的ExtendedUriInfo检索matchedResources/matchedResults,以便我可以检查路径是否应该受到保护.有没有办法创建一个在填充ExtendedUriInfo之后但在调用匹配的资源类和方法之前调用的过滤器?
这是一个更一般的答案(例如,如果你正在使用另一个像CXF这样的jax-rs实现):
只需在过滤器类中添加以下内容作为实例变量:
@Context
ResourceInfo信息;
"javax.ws.rs.container.ResourceInfo是一个新的JAX-RS上下文,可以将其注入到过滤器和拦截器中,并检查哪些资源类和方法即将被调用. "
(来源:https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Basics#JAX-RSBasics-ResourceInfo)
找到了使用ContainerRequestFilter的方法:
public void filter(ContainerRequestContext requestContext) {
UriRoutingContext routingContext = (UriRoutingContext) requestContext.getUriInfo();
ResourceMethodInvoker invoker = (ResourceMethodInvoker) routingContext.getInflector();
Class<?> className = invoker.getResourceClass();
Method methodName = invoker.getResourceMethod();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3993 次 |
| 最近记录: |