2016-09-22 56 views
3

管理中访问控制列表的最有效方法是什么?Algolia中的访问控制列表搜索列表

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

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

回答

7

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

{ "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