我正在开发一个基于Web服务的Tomcat应用程序,该应用程序专门执行JAX-RS类型的RESTful API。有一个由标头确定的授权概念。根据一个人扮演的角色,他们或多或少会看到某些东西,但是通常他们会看到至少一部分东西。例如,有一项提供类别列表的服务。几乎每个人都可以访问它,但不是每个人都看到所有类别。
有一种方法可以执行数据库调用来获取用户有权查看的内容,但是大约需要200毫秒。我想做一次并将其存储在某种会话中。但是,这又是JAXRS,我以前认为状态无法保持。我可以只进行一次权利检查,将结果对象存储在HttpSession中吗?我需要对Tomcat / OpenShift和其他人员进行任何维护吗?我不认为会话会在OpenShift负载均衡器上的位置之间跳转。
我看到了这样的代码:
@Provider
public class AuthenticationFilter implements javax.ws.rs.container.ContainerRequestFilter
...
private static final String AUTHORIZATION_PROPERTY = "Authorization";
private static final String AUTHENTICATION_SCHEME = "Basic"
但是我不知道这是否适用于所有JAX-RS类型的情况。现在,我什至不知道部署了什么样的授权方案。
我不是在寻找完整的答案,而是一个有用的起点和避免的地方。如果某些东西在部署时不起作用,尤其是在生产时,我将不会有太多的错误余地。