Firestore 模拟器:规则允许我拒绝

时间:2021-05-24 16:49:33

标签: firebase google-cloud-firestore emulation rules permission-denied

我使用 Firebase 构建了一个应用。为了保护我的数据库,我使用了一些规则。

这是一个示例

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    function getUserData(
      userId
    ){
      return get(/databases/$(database)/documents/Users/$(userId)).data;
    }

    //    Check if the requested user has specified roles
    function hasUserRole(
      userId,
      roles
    ){
      return getUserData(userId).role in roles;
    }

    match /Users/{user} {
      allow list: if hasUserRole(request.auth.uid, ['Admin']);
    }
  }
}

我混合使用了在该网站 https://datadependence.com/2019/10/firestore-rules-examples/#using-functions

中找到的 2 条规则

第一个

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /pets/{petId} {
      allow read: if get(/databases/$(database)/documents/petowners/$(request.resource.data.ownerId)).data.userId == request.auth.uid
    }
  }
}

第二个

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /emails/{emailId} {
      allow write: if request.resource.data.status in ['sending', 'soft-bounce', 'hard-bounce', 'received']
    }
  }
}

firestore 的内容 enter image description here

FireAuth 的内容 enter image description here

应用程序中产生错误的代码。 uid 的值 => NERot4xIAZBiDrH3XKmsCbtokP5Y

this._firestore.doc("/Users/" + uid).get()

请帮助我了解为什么我仍然遇到有关在模拟器中被拒绝的权限并且在 GCP 控制台中完美运行的问题

GCP 规则模拟器截图 enter image description here

0 个答案:

没有答案