【发布时间】:2020-05-08 21:15:25
【问题描述】:
我想问一下保护 Firestore 子集合的最佳方法是什么。
这是我的问题:我有一个用户集合,其中有一个名为用户 ID 的文档。我在该文档中也有一个集合,其中包含一些信息,包括用户 ID(再次)。是否有一种简单的方法可以访问嵌套在用户文档的子集合中的每个文档?
到目前为止,我写了以下内容。我可以访问第一个文档(名为 i6mg 的文档......但不能访问名为 DxDt 的第二个文档......)
match /users/{user} {
allow read: if resource.data.userId == request.auth.uid;
allow write: if false;
match /wordScores/{doc} {
allow read : if resource.data.userId == request.auth.uid;
allow write;
}
match /groupScores/{doc} {
allow read: if resource.data.userId == request.auth.uid;
allow write;
}
}
额外的问题:有没有一种方法可以保护所有文档,而无需在每个文档中都包含用户 ID?
谢谢
编辑 感谢道格的建议。我添加了以下代码,并且可能遇到了其他一些问题......
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid}/{document=**} {
allow read: if uid == request.auth.uid;
allow write: if uid == request.auth.uid;
}
}
}
看起来我正在让我的用户访问子集合,而不是主集合。例如以下代码不会产生结果,它会捕获异常
await Firestore.instance.collection('users').where('userId', isEqualTo: userId).limit(1).getDocuments();
有什么建议吗?
【问题讨论】:
标签: google-cloud-firestore firebase-security