【发布时间】:2019-02-13 22:33:25
【问题描述】:
Firestore 安全规则的新手,正在尝试理解它。我正在尝试编写一个安全规则,只允许我的集合中的admins 写入数据并且每个人都可以读取它。
admins 的集合具有文档 ID 作为管理员名称,例如“Mary Lane”。在我拥有的文档中:
email: "userMailId@mail.com"
uId: "firestore_user_Id"
uId 是 Firestore 用户 ID 的 ID。要写入的数据是一个对象Message,是:
new Message(uId, title, messageBody, timestamp)
目前我正在尝试将request.auth.uid 与存储在集合中的admins 的ID 匹配:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth.uid == resource.data.uId;
}
}
}
这是写的还是我做错了什么。任何帮助表示赞赏。
【问题讨论】:
-
请编辑您的问题,以更具体地说明“我将管理员和文档 ID 集合作为管理员名称”的含义。如果这些“管理员名称”不属于 Firebase 身份验证用户数据,您将无法完成任务。理想情况下,您希望通过 firebase auth uid 为您的管理数据索引。
-
@DougStevenson 我已经编辑了这个问题。现在可以了吗?
-
您尚未说明如何在管理员集合中识别管理员。文件编号是什么?如果文档 ID 不是 Firebase 身份验证 UID,那么这可能不起作用。
-
@DougStevenson 再次编辑了问题。我使用文档 ID 作为人名。
标签: firebase google-cloud-firestore firebase-security