【问题标题】:Multi-tenant Algolia index多租户 Algolia 索引
【发布时间】:2016-12-15 15:42:14
【问题描述】:

我想通过他们的数据向我的用户提供全文搜索 - 并确保他们只能访问他们拥有的数据。是否有任何模式允许在 Algolia 上这样做?我考虑过的解决方案似乎都不合适,所以我想知道我是否忽略了其他一些选择。

我们可以将每个用户的数据托管在单独的 Algolia 应用程序中,这样每个 API 密钥都只能访问相关数据,但这很快就会变得难以承受,因为许多记录会达到 10000 条记录的限制。

我们可以将每个用户的数据托管在单独的索引中并使用团队索引限制,但似乎没有 API 来管理这些,而且无论如何这都需要为每个客户提供一个 Algolia 帐户,这似乎是对服务(例如,我们可以在我们的域名下生成电子邮件地址)。

最后,我们可以使用一些 userId 过滤查询以仅检索相关数据,但这并不安全,因为有人可以在没有过滤器的情况下使用 apikey 查询 algolia。 我们可以代理 algolia 调用来注入过滤器和 api 密钥 - 但性能损失可能会很高。

还有其他建议吗?谢谢!

【问题讨论】:

  • 你好冯德!这是一个很好的问题,但对于 StackOverflow 来说是题外话,因为它与编程无关。你能把它贴在阿尔戈利亚论坛上吗? discourse.algolia.com/c/development我会确保它得到解决。
  • @Josh 你是对的。完成!
  • 如果你考虑使用多应用解决方案,我建议你这个网站来管理你的应用程序。目前,您只能将来源应用程序复制到目标应用程序(完整复制、仅设置复制或仅数据复制)并清除您选择的环境。 algoliaextended.com希望对您有所帮助。

标签: algolia


【解决方案1】:

我从 Algolia 的 rayrutjes 那里得到了很好的回答,所以我把它贴在这里以防万一:

最适合您的用例的方法是使用我们所说的生成的 API 密钥。这是 JavaScript 客户端的文档:https://www.algolia.com/doc/api-client/javascript/api-keys/#generate-key

用法相当简单,您可以根据您的搜索 API 密钥 + 一些额外的查询参数动态生成一个 API 密钥。

生成的 API 密钥可以像标准搜索 API 密钥一样使用,不同之处在于它可以在给定的参数集范围内。

请注意,生成此类范围 API 密钥不需要实际调用 API。

还要确保在后端生成这些作用域 API 密钥,因为在这种情况下,您不想公开用于生成它们的搜索 API 密钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2011-12-30
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2017-10-19
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多