涉及用户 ID 时的 Algolia 后端搜索或前端搜索



我把我的记录存储在Algolia索引中,每个索引都有一个userID属性。我想执行搜索,以便过滤用户可见的记录,以便userID匹配。我可以使用instantsearch库和存储在 localStorage 中的userID在前端轻松完成此操作。

在前端传递 userID 时出现问题<</strong>br/>任何使用客户端的人都可以使用不同的userID来操作 Algolia 请求,这些将过滤与这些 ID 相关的结果。这里有一个安全问题。但正如Algolia在这里提到的,前端搜索可以提高10倍。

使用后端搜索的解决方案
可以实现这一点,以便将具有相关搜索参数和过滤器的普通 HTTP 请求发送到后端,并在后端添加userID。之后,在后端进行搜索,并使用HTTP响应将数据发送回前端。速度较慢,因为它已经通过多个服务器只是为了添加userID

Question
我想知道是否还有使用前端搜索和保护安全性的解决方法,因为速度也很重要。我是使用Algolia的新手,仍然不完全了解它的功能。

谢谢。

有一种内置的方法可以为记录访问控制添加基于用户的安全性。

您需要使用硬编码的筛选器生成临时 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-key

最新更新