Java 如何通过分析URI来识别JAX-RS控制器?

Java 如何通过分析URI来识别JAX-RS控制器?,java,security,rest,jax-rs,Java,Security,Rest,Jax Rs,我想在基于JAX-RS的应用程序中创建一个授权过滤器 该过滤器将标识HTTP请求URI引用的资源类。资源将具有具有可能角色和操作的自定义注释 根据所引用的类,筛选器将决定该资源上允许的可能操作 因此,确定JAX-RS将执行哪些资源和方法的机制是什么?我认为您需要的是ContainerRequestFilter。这将允许您拦截每个请求,并通过验证访问密钥或您用来识别用户授权的任何方法来授权请求。这里是一个在Jersey中使用的示例,尽管我在JAX-RS文档中看到了这个过滤器的定义,所以它很可能在其

我想在基于JAX-RS的应用程序中创建一个授权过滤器

该过滤器将标识HTTP请求URI引用的资源类。资源将具有具有可能角色和操作的自定义注释

根据所引用的类,筛选器将决定该资源上允许的可能操作


因此,确定JAX-RS将执行哪些资源和方法的机制是什么?

我认为您需要的是ContainerRequestFilter。这将允许您拦截每个请求,并通过验证访问密钥或您用来识别用户授权的任何方法来授权请求。这里是一个在Jersey中使用的示例,尽管我在JAX-RS文档中看到了这个过滤器的定义,所以它很可能在其他实现中使用

由于不知道确切的需求,很难推荐一种管理角色和批准使用的具体方法,这也可能取决于角色的复杂程度。如果角色非常静态,您可能需要考虑使用注释来标记受保护端点,并依赖代码来指定访问。您也许还可以使用注释来绑定数据库注释中的键/角色。params将允许更大的灵活性。无论你选择什么,我都不会完全在过滤器中编码

因为我提到了注释,这里有一些关于如何使用的建议。Spring还将帮助您为任何Springbean实现这一点

编辑:我差点忘了,您还可以检查rest服务类中的JAX-RS注释,这将是确定基于uri调用哪个类的一种方法。我在想也许还有别的办法,不过我现在想不起来了