仅允许空文档的 Firestore 安全规则

时间:2021-01-31 17:10:28

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

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

2 个答案:

答案 0 :(得分:1)

经常使用空文档会导致后续问题。为什么不需要单个标记字段,并在规则中验证它?

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

答案 1 :(得分:0)

为了其他希望在 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
}