如何允许某个firestore用户账号访问另一个用户创建的文档?[已关闭]


我正在尝试建立一个安全系统,允许一个用户读取另一个用户创建的特定文档。我正在努力思考我的安全规则,但我不确定如何实现。理想的情况是,文档的拥有者提供权限给另一个用户,让他可以 “读取 “这个文档的任何更新和修改。

目前,我正在创建一个随机的字符串,然后用这个字符串创建一个文档。然后,用户有机会与另一个用户分享(例如通过文本或其他机制)。如果其他用户有这个字符串(会话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的shared_rules中。我们使用文档Id作为键,这样规则就知道是哪个文档。

只有uid_0可以向该节点写入,但其他人可以从该节点读取,规则会简单地验证uid_0doc_0shared_withuid_1是否存在,如果存在,允许doc_0被uid_1读取。如果不存在,则不允许读取。

还有大约100个其他选项,但也许这将为你的用例指出正确的方向。

给TA打赏
共{{data.count}}人
人已打赏
未分类

这是多态性,这种做法不好吗?

2022-9-10 7:53:39

未分类

makefile和git路径在不同电脑上的问题。

2022-9-10 7:53:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索