Firestore规定了如何使用户只能使用其名称读写文档

时间:2019-08-27 18:30:04

标签: firebase google-cloud-firestore firebase-security

这些规则是只有登录的用户才能访问实时数据库中以其用户ID命名的文档。我想问一下如何在Firestore中执行此操作,除了文档名称不是用户ID,而是用户名(这是电子邮件的第一部分)

在文档名称为uid之前,我已经看到了这一点,但是我的文档名称是用户的用户名,并且该用户名在身份验证中存储为@之前的部分电子邮件。

例如,我有以下用户:

  • john@gmail.com

  • jane@gmail.com

我的消防站是:

收藏:用户

  • john

  • jane

只有以john@gmail.com登录的用户才能在用户中写入john文档。我不知道如何从auth变量中提取电子邮件。

有没有一种方法可以将文件重命名为用户ID?

1 个答案:

答案 0 :(得分:0)

我发现您可以使用request.auth.token['email']来获取用户的电子邮件。我可以使用它来允许任何人阅读,只有未经身份验证的人才能创建,并且用于更新和删除用户只能更新/删除自己的文档(使用电子邮件):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{email} {
      allow read;
    }
    match /users/{email} {
      allow update, delete: if request.auth.token['email'] == email;
      allow create: if request.auth.uid != null;
    }
  }
}