我將我的記錄存盤在 Algolia 索引中userID,每個索引都有一個關聯的屬性。我想執行搜索,以便過濾用戶可見的記錄,以使userIDs 匹配。我可以在前端使用instantsearch庫和userID存盤在 localStorage 中輕松地做到這一點。
在前端傳遞 userID 的問題
任何使用客戶端的人都可以使用不同的 s 來操作 Algolia 請求,userID這將過濾與這些 ID 相關的結果。這里有一個安全問題。但是正如 Algolia 在這里提到的,前端搜索速度可以提高 10 倍。
使用后端搜索的解決方案
可以實作這一點,將正常的 HTTP 請求發送到后端,并帶有相關的搜索引數和過濾器,并userID在后端添加。之后在后端進行搜索并使用 HTTP 回應將資料發送回前端。速度較慢,因為它已經通過多個服務器只是為了添加userID.
問題
我想知道是否還有一種使用前端搜索和保持安全性的解決方法,因為速度也很重要。我是使用 Algolia 的新手,但仍然不完全了解它的功能。
謝謝。
uj5u.com熱心網友回復:
有一種內置的方法可以為記錄訪問控制添加基于用戶的安全性。
您需要使用硬編碼的過濾器生成臨時 API 密鑰。最終用戶無法更改這些過濾器來繞過安全性。當用戶通過您的登錄流程時,后端會使用適當的過濾器生成此密鑰(例如'filters' => visible_by:group/'.$currentGroupId.' OR visible_by:group/Everybody',并將其傳遞給前端以代替僅搜索 API 密鑰。
您的記錄將需要包含visible_by具有適當值的過濾器(在這種情況下)的匹配屬性。
您可以在此處閱讀更多相關資訊:https ://www.algolia.com/doc/guides/security/api-keys/how-to/user-restricted-access-to-data/#generating-a-secured-api -鑰匙
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416028.html
標籤:
