我正在尝试提出一个安全系统,该系统允许用户对另一个用户创建的特定文档进行读取访问。我试图通过安全规则来思考,但是我不确定该如何实施。理想情况下,文档的所有者应允许其他用户“读取”对此文档的任何更新和更改
目前,我正在创建一个随机字符串,并使用该字符串创建文档。然后,用户就有机会与其他用户共享此内容(例如,通过文本或其他某种机制)。如果其他用户具有字符串(会话ID),那么他们可以将其输入到视图中,然后实时读取该用户所做的任何更新。
问题是我不能保证会话ID是唯一的,并且我确信这不是很安全。我想我需要创建一个文档,并在具有会话ID的文档中创建一个值。同样,不确定如何确保会话ID在所有其他文档中是唯一的。
我只是不确定安全地实现此目标的最佳方法是什么。在此先感谢您的帮助。
答案 0 :(得分:2)
这个问题有点广泛,让我提供一个广泛的建议。
从结构开始
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_0 / doc_0 / shared_with / uid_1存在,如果存在,则允许uid_1读取doc_0。如果没有,则不允许读取。
还有大约100种其他选择,但这也许会为您的用例指明正确的方向。