Algolia中的访问控制列表搜索列表

时间:2016-09-22 06:55:12

标签: javascript express algolia

中管理访问控制列表的最有效方法是什么。

我们有项目列表,但我们不想使用全局列表。我们的列表因个人用户而异。

我们的应用程序有一个ACL逻辑 - 我们可以将该访问逻辑与Algolia对齐吗?

1 个答案:

答案 0 :(得分:7)

处理这种情况的最佳方法是将所有记录(交叉用户)存储在单个索引中,并使用单个用户ID对其进行标记。

{ "objectID": 1, ....., "_tags": ["user_21"] }
{ "objectID": 2, ....., "_tags": ["user_21"] }
{ "objectID": 3, ....., "_tags": ["user_42"] }

然后在搜索时,使用安全的API密钥将搜索限制为特定的用户ID。这是一个安全的解决方案,您可以使用JavaScript代码,确保您的用户只搜索他们有权访问的记录。

在你的后端:

// if the current user is ID=42
public_key = Algolia.generate_secured_api_key('<SearchOnlyAPIKeyKeptPrivate>', {filters: 'user_42'})

在您的前端:

var client = algoliasearch("APPID", '<PublicApiKeyGeneratedForUser42>');
index.search('.....');

您可以在此处详细了解API密钥(尤其是安全API密钥):https://www.algolia.com/doc/guides/security/api-keys