我试图使用firebase创建一个文本编辑器应用程序,允许用户创建文档,但他们也可以在现有文档中嵌套一个新文档(编辑文档时,他们可以单击一个按钮,在数据库中添加一个新文档,并在重定向到此页面的编辑器中插入一个链接):

用户可以与其他用户共享文档,但是他们也应该可以访问所有嵌套的文档。因此,现在我想知道如何编写安全规则来做到这一点。
我认为构建实时数据库的最佳方法是将所有文档存储在根目录中,然后在每个文档中添加一个parentDocument或path属性:
{
"documents": {
"doc-1": {
"title":"Lorem ipsum",
"content": "...",
"path":"/",
"owner":"user-1",
"canAccess":{
"user-3":true
}
},
"doc-2": {
"title":"Dolor sit",
"content": "...",
"path":"/doc-1/",
"owner": "user-1"
"canAccess": {
"user-2":true
}
}
},
"users": {
"user-1": { ... },
"user-2": { ... },
"user-3": { ... }
}
}↑在下面的示例中,
但是现在我不知道如何管理安全规则,因为要检查用户是否有访问特定文档的权限,我猜它需要遍历其每个父级(使用其path或parentDocument支柱)。也许我也可以在每个文档上指定canAccess支柱,但是当父文档的canAccess支柱被更新时,我必须更新每个嵌套文档.
任何帮助都将不胜感激。
发布于 2022-04-20 18:13:41
在Firebase实时数据库模型中,权限自动级联向下。这意味着,一旦授予特定路径上的用户(读或写)权限,他们也可以访问该路径下的所有数据。您再也不能在较低级别撤销该权限了。
因此,您的需求实际上与此模型非常匹配,如果遇到问题,我建议您尝试实现它并报告。
https://stackoverflow.com/questions/71943771
复制相似问题