【发布时间】:2020-03-13 06:09:39
【问题描述】:
我想根据请求数据的用户的 UID 检查存储在文档(名为 premiumID 的父集合)的文档字段中的 UID。简单来说,我希望用户只访问包含其 UID 的文档。
这是我到目前为止所做的事情
service cloud.firestore {
match /databases/{database}/documents {
match /premiumID/{docId} {
function userData() {
return resource.data.uid
}
allow update: if userData() == request.auth.uid;
allow delete: if userData() == request.auth.uid;
allow create: if request.auth.uid != null;
allow read: if userData() == request.auth.uid;
}
}
}
这是我的数据库的样子-
这是我测试它的方式。这让我读写被拒绝。
【问题讨论】:
-
请不要在 Stack Overflow 上分享代码链接。将代码复制到问题本身中。
-
您的规则声明了一个完全为“pID”的集合名称,但您的数据库显然显示了一些不同的东西,这些东西被模糊了。如果没有完全匹配,则无法正常工作。
-
@DougStevenson 我故意模糊了 premiumID 字段,但我想我忘了在另一张图片中这样做。我检查并复制粘贴了路径和集合名称或文档 ID,所以我没有打错。
-
您可以尝试使用规则simulator,这样我们就可以看到如果您在本地运行会发生什么情况,因为一切似乎都井然有序,您的规则应该可以正常工作。
标签: android firebase google-cloud-firestore firebase-security