如何允许Firebase用户仅访问他们创建的文档

问题描述 投票:0回答:1

对我来说,这是用户生成内容的最基本的身份验证方案,给定一个名为“帖子”的集合:

  1. 允许任何经过身份验证的用户插入“帖子”收藏夹
  2. 允许将文档插入集合“帖子”的用户阅读,更新和销毁文档,并拒绝所有其他用户
  3. 如果用户是最初创建文档的人,则允许用户列出集合“帖子”中的所有文档

到目前为止,我发现的所有示例似乎都依赖于文档ID与用户ID相同,后者仅适用于用户的“个人资料”数据(同样,所有示例似乎都适用于这种有限的情况) 。

似乎在创建文档时似乎没有关于经过身份验证的用户身份的元数据,因此似乎我必须自己将ID存储在文档上,但是我无法通过此操作指向并创建一个工作示例。此外,由于用户ID是由客户端设置的,因此这也为用户提供了与其他用户一样创建文档的机会。

我觉得我在这里缺少一些基本的东西,因为这必须是最基本的情况,但尚未找到任何简洁的例子来做。

非常感谢您的帮助,谢谢!

firebase-security-rules
1个回答
0
投票
此答案来自此github gist。基本上,在文档收集帖子中,有一个名为uid的字段,它检查是否与用户uid相匹配。

// Checks auth uid equals database node uid // In other words, the User can only access their own data { "rules": { "posts": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }

© www.soinside.com 2019 - 2024. All rights reserved.