运行 firestore 安全规则时出现 Null 值错误

Null Value Error when running firestore security rule

提问人:MXC 提问时间:4/8/2020 最后编辑:Frank van PuffelenMXC 更新时间:4/9/2020 访问量:1554

问:

我正在学习 firestore 安全规则,但我无法弄清楚为什么我的安全规则会失败。

这是我的数据结构:enter image description here

这是我尝试运行的规则:

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

    match /company/{company} {
      allow create, read, write, delete: if request.auth.uid != null && 
        get(/databases/$(database)/documents/developer/$(request.auth.uid)).data.is_admin == true             
    }
  }
}

这是我来自模拟器的 JSON 有效负载:

{
  "uid": " sxTCUVtxcSSTIWicv7op10Cc3ff2",
  "token": {
    "sub": " sxTCUVtxcSSTIWicv7op10Cc3ff2",
    "aud": "test-123",
    "email": "",
    "email_verified": false,
    "phone_number": "",
    "name": "",
    "firebase": {
      "sign_in_provider": "google.com"
    }
  }
}

您可以看到与开发人员 documentID 匹配的内容。这是我收到的错误。UID

运行模拟时出错 – 错误:simulator.rules 行 [6],列 [73]。Null 值错误。

请指导我做错了什么。

firebase google-cloud-firestore firebase -安全

评论


答:

3赞 Bob Snyder 4/9/2020 #1

模拟器中的 JSON 有效负载在“uid”中显示前导空格:

"uid": " sxTCUVtxcSSTIWicv7op10Cc3ff2",  
        ^Remove this space

从模拟器输入中删除空格后,它应该可以工作。

评论

0赞 MXC 4/9/2020
哦,我的上帝!!那对我来说太愚蠢了。你是完全正确的。多谢。
0赞 Jkarttunen 7/3/2021
任何对此进行编辑的人 - 检查 firebase 中手写或复制粘贴的 UID 是否不包含前导或尾随空格!!这个确切的东西以另一种方式咬了我。