【问题标题】:Allowing access based on mapped key允许基于映射键的访问
【发布时间】:2018-04-02 22:32:29
【问题描述】:

这是一个简单而常见的安全规则用例,但不能使其工作。 我的 Firestore(不是 RTDB)上有一个文档 orgs/fooOrg,它包含一个对象

{
  "members": {
    "fooUser": true
  }
}

应用的规则是

service cloud.firestore {
  match /databases/{database}/documents {
    match /orgs/{orgId} {
      allow read: if "fooUser" in resource.data.members;
    }
  }
}

我希望orgs 集合中的所有文档都应该能够被读取;但是,由于运行,服务器会显示Error: Missing or insufficient permissions

firebase.firestore().doc('orgs/fooOrg').get()

在浏览器上(使用 v4.5.0 和 v4.5.1)。甚至

allow read: if resource.data.members["fooUser"] == true;

也失败了。出了什么问题?

据我了解,这应该根据本文档工作 https://firebase.google.com/docs/firestore/security/secure-data#evaluating_documents_currently_in_the_database

我相信它像一周前一样工作。突然之间,我的工作代码开始产生错误,所以我编写了这个 MCVE 并在几个不同的项目上进行了测试。

此外,我在下面发现了类似的问题,但与它们有点不同,所以不确定是否是相同的原因(Firestore 上的一个错误)

Firestore security rules based on map values (我的情况,即使得到一个简单的文件也失败了)

Firestore read rules with self condition (本案例使用了map的值,我的案例,使用了key)

【问题讨论】:

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


    【解决方案1】:

    现在看来,无需更改代码即可解决问题。没有公告,但似乎 Firestore 方面已经修复了一些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多