2016-12-15 60 views
0

我想通過自己的數據提供全文檢索到我的用戶 - 並確保他們只能訪問他們所擁有的數據。有沒有什麼模式可以在Algolia上做到這一點?我所考慮的解決方案似乎都不太合適,所以我想知道我是否忽視了其他一些選擇。多租戶Algolia指數

我們可以在一個單獨的Algolia應用程序中託管每個用戶的數據,以便每個API密鑰只允許訪問相關數據,但這很快會變得難以負擔,因爲許多會達到10000條記錄限制。

我們可以將每個用戶的數據託管在單獨的索引中,並使用團隊索引限制,但似乎沒有API來管理這些數據,並且無論如何都需要爲每個客戶提供Algolia帳戶,這似乎是一種濫用(我們可以在我們的域名中生成電子郵件地址)。

最後,我們可以過濾查詢一些用戶id只能檢索到的相關數據,但不會是安全的,因爲有人可能會使用apikey查詢algolia沒有過濾器。 我們可以委託algolia調用注入過濾器和API密鑰 - 但是PERF懲罰可能會很高。

其他建議?謝謝!

+0

嗨VonD!這是一個很好的問題,但是對於StackOverflow而言,這不是主題,因爲它與編程無關。你可以在Algolia論壇上發佈嗎? https://discourse.algolia.com/c/development我會確保它得到解決。 –

+0

@Josh你說得對。完成! – VonD

+0

如果您考慮使用多應用程序解決方案,我建議您使用此網站來管理您的應用程序。目前,您只能將源應用程序複製到目標應用程序(完全複製,僅複製設置或僅複製數據)並清除您選擇的環境。 http://algoliaextended.com/ 希望它會有所幫助。 –

回答

3

我從rayrutjes一個偉大的答案在Algolia,所以我在這裏把它粘貼在情況:

爲您的使用情況下,最好的方法是使用我們所說的生成API密鑰。以下是JavaScript客戶端的文檔:https://www.algolia.com/doc/api-client/javascript/api-keys/#generate-key

使用非常簡單,您可以基於您的搜索API密鑰+一些其他查詢參數即時生成API密鑰。

所得API密鑰可用於像標準搜索API鍵,條件是它可以在一組給定的參數的作用域的差異。

注意這樣一個範圍的API密鑰的產生並不需要對API的實際調用。

此外,一定要產生在後端的範圍的API密鑰,如你不希望暴露你使用他們那一代搜索API密鑰的情況下。