用户的Firestore数据库规则

时间:2018-01-24 01:00:52

标签: firebase-security google-cloud-firestore

我正在关注有关firestore的教程,但我不太了解firestore规则。我试图让任何人都能够在标准中创建     用户/ UID / 路径,但只有在请求者尝试更新时才允许更新     用户/ theirUserId / 我在文档中看到了这一点,但它似乎对我不起作用:

allow write: if request.auth.uid == resource.data.author_id;

任何人都可以解释上述行的功能和/或提供有关如何实现此目的的建议吗?

此外,有没有办法为文档中的特定数据指定规则?

2 个答案:

答案 0 :(得分:1)

您的文档似乎不包含author_id字段。

Firebase文档Writing Conditions for Security Rules使用此示例:

service cloud.firestore {
  match /databases/{database}/documents {
    // Make sure the uid of the requesting user matches the 'author_id' field
    // of the document
    match /users/{user} {
      allow read, write: if request.auth.uid == resource.data.author_id;
    }
  }
}

这意味着,如果他们的身份验证ID等于{{1},那么随机用户将只能read 中的writeusers特定文件的字段。

  

资源变量引用所请求的文档,author_id是存储在文档中的所有字段和值的映射。有关资源变量的更多信息,请参阅reference documentation

关于第二个问题,我建议您查看有关resource.data变量的文档(上面引用的链接)。它与您的resource问题的逻辑相同。

答案 1 :(得分:0)

对于特定情况,您可以将allow write分为三个createupdatedelete

在你的情况下

allow create: if request.auth.uid != null;
allow update: if request.auth.uid == resource.data.author_id;

表示任何经过身份验证的用户都可以创建并仅更新其文档。并且创建的用户必须有一个字段author_id,这是他们的用户ID。