【问题标题】:Firestore security rule that only allows empty documents仅允许空文档的 Firestore 安全规则
【发布时间】:2021-01-31 17:10:28
【问题描述】:

我基本上是在尝试将 firestore 集合用作电子邮件列表。任何人都可以创建一个以他们的电子邮件为 id 的文档,仅此而已。棘手的部分是“仅此而已”位。当请求中没有提供数据时,request.resourceundefined,据我所知,您无法在安全规则中检查。这可能吗?或者是否有必要为此用例设置一个必填字段?

【问题讨论】:

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


    【解决方案1】:

    经常有空文档会导致问题。为什么不要求单个标记字段,并在规则中进行验证?

    request.resource.data.keys.hasOnly("marker")
    

    【讨论】:

    • 除了觉得没有必要外,没有其他理由。但是,如果标记字段有效并且还有助于防止出现问题,那么我很感激现在可以安心。虽然我很想知道为什么这会导致问题?
    【解决方案2】:

    为了其他希望在 Firestore 中创建电子邮件列表的人的利益,这是我最终使用的完整规则:

    match /email-list/{email} {
      allow get: if true;
      allow list: if false;
      allow create: if request.resource.data.keys().hasOnly(["marker"]) 
        && request.resource.data.marker == true
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多