Firebase 如何允许特定firestore用户帐户访问由其他用户创建的文档?

Firebase 如何允许特定firestore用户帐户访问由其他用户创建的文档?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我正在尝试设计一个安全的系统,允许用户对另一个用户创建的特定文档进行读取访问。我正试图通过安全规则来思考问题,但我不确定其实现方式。理想情况下,文档的所有者将允许其他用户“阅读”此文档的任何更新和更改 目前,我正在创建一个随机字符串,并使用该字符串创建一个文档。然后,用户有机会与另一个用户共享(例如通过文本或其他机制)。如果其他用户拥有该字符串(会话ID),则他们可以将该字符串输入到视图中,然后实时读取用户所做的任何更新 问题是我不能保证会话ID是唯一的,我确信这不是很安全。我想我需要创建一个文

我正在尝试设计一个安全的系统,允许用户对另一个用户创建的特定文档进行读取访问。我正试图通过安全规则来思考问题,但我不确定其实现方式。理想情况下,文档的所有者将允许其他用户“阅读”此文档的任何更新和更改

目前,我正在创建一个随机字符串,并使用该字符串创建一个文档。然后,用户有机会与另一个用户共享(例如通过文本或其他机制)。如果其他用户拥有该字符串(会话ID),则他们可以将该字符串输入到视图中,然后实时读取用户所做的任何更新

问题是我不能保证会话ID是唯一的,我确信这不是很安全。我想我需要创建一个文档,并在该文档中使用会话ID创建一个值。同样,我不知道如何确保会话ID在所有其他文档中是唯一的


我只是不确定安全地实现这一点的最佳方法是什么。提前感谢您对我们的任何帮助和指导

这个问题有点宽泛,所以让我提供一个宽泛的建议

从一个结构开始

users
   uid_0
      name: "Hank"
   uid_1
      name: "Frank"
   uid_2
      name: "Lenny"
假设用户可以制作文档并与他人共享

documents
   doc_0
      title "hanks document"
      owner: uid_0
Hank与Frank共享他的文档,因此更新确定哪些用户可以访问哪些文档的节点:

shared_rules
   uid_0
       doc_0
          shared_with
             uid_1: true
在这种情况下,当Hank(uid_0)与Frank(uid_0)共享文档时,uid_0的共享规则中会添加一个子项。我们使用文档Id作为键,以便规则知道它是哪个文档

只有uid_0可以写入该节点,但其他人可以从该节点读取,规则只需验证uid_0/doc_0/shared_with/uid_1是否存在,如果存在,则允许uid_1读取doc_0。如果不是,则不允许读取


还有大约100个其他选项,但这可能会为您的用例指明正确的方向。

对于堆栈溢出,您的问题有点模糊。我建议编辑这个问题,讨论您想要的文档是什么样子,您用来读写它们的代码,以及第一次尝试表达安全规则,即使它们不能按您期望的方式工作。好的,我再试试。感谢您的反馈。感谢您抽出时间回答。我会研究这个方法,真的很有帮助,我刚刚习惯firebase。