[英]How to access current security context within a driver in cube.js
我正在开发一个自定义的cube.js
数据库驱动程序,它使用一个私有的 http 服务,它接受任意的原始 sql 并将结果作为 json 返回。
http 服务使用Authorization
标头来识别用户(以便它可以强制执行适当的访问控制)。
我一直在寻找可以将cube.js
安全上下文传递给驱动程序的方法。
我尝试了他们的多租户文档中提到的步骤,特别是多模式和驱动程序之一。
它仅在我第一次能够访问driverFactory()
回调中的安全上下文时才有效。 在那里,我使用securityContext
中的用户令牌初始化新的驱动程序实例。
但是对于后续调用(具有不同用户的事件!), cube.js
重用相同的实例。 这就是问题的原因。 我无法在不同的应用程序用户之间重用驱动程序。
有没有办法解决这个问题? 还是我在这里没有正确实施多租户?
我们可以使用contextToOrchestratorId
函数(在v0.29
中引入)结合contextToAppId
来实现。
根据文件,
contextToOrchestratorId
是一个用于确定 Query Orchestrator 实例的缓存键的函数。 Query Orchestrator 保存数据库连接、执行队列、预聚合表缓存。 默认情况下,所有租户使用同一个实例; 在每个租户都需要自己的 Query Orchestrator 的情况下覆盖此属性。
感谢Cube.js 社区 slack上的 Ivan Vdovin 提供方向 +1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.