[英]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.