【问题标题】:Null Value Error when running firestore security rule运行 Firestore 安全规则时出现空值错误
【发布时间】:2020-04-08 00:50:24
【问题描述】:

我正在学习 Firestore 安全规则,但我无法理解为什么我的安全规则失败了。

这是我的数据结构:

这是我要运行的规则:

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"
    }
  }
}

您可以看到UID 与开发人员文档ID 匹配。这是我收到的错误。

错误运行模拟 - 错误:simulator.rules 行 [6],列 [73]。空值错误。

请指导我做错了什么。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 天哪!那是我的愚蠢。你是完全正确的。非常感谢。
    • 任何人都在修改这个 - 检查 firebase 中手写或复制粘贴的 UID 不包含前导或尾随空格!!!这个确切的东西让我反感。
    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 2018-10-19
    • 2019-07-05
    • 2020-01-14
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多