在Firestore规则中使用resource.data

时间:2018-06-05 02:37:20

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

我有以下Firestore规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
        allow read: if true;
    }
    match /institutions/{institution}/watches/{watch} {
      allow read, update, delete: if request.auth.email == resource.data.email;
      allow create: if request.auth.email != null;
    }
  }
}

基本上,我喜欢这样,当且仅当文档上的电子邮件与用户的电子邮件相同时,才会读取/更新/删除/institutions/{institution}/watches下的任何文档。但是,当我使用示例文档在模拟器中运行时,我无法使访问控制工作,并且我在API客户端上也收到了权限被拒绝错误。

有没有办法进一步调试/我的上述规则中缺少什么?

1 个答案:

答案 0 :(得分:1)

我认为request.auth.email应该是request.auth.token.email。参见https://firebase.google.com/docs/reference/rules/rules.firestore.Request#auth