假设有以下规则
service cloud.firestore {
match /databases/{database}/documents {
function roomAccess() {
return resource.data.allow_anonymous == true || (request.auth.uid == resource.data.uid);
}
function writeOnlyOwner() {
return request.auth.uid == resource.data.uid;
}
match /rooms/{room_id} {
allow read: if roomAccess();
allow write: if writeOnlyOwner();
allow create: if request.auth.uid != null;
}
}
}
问题
是否可以查询将access_key
设置为某个值的特定房间?
db.collection('rooms')
.where('access_key', '==', access_key)
.get()
请务必注意,我查询的是房间的creator
(并且与我的room.uid
相匹配的uid
尽管如此,它在访问权限上失败。 而且文档似乎没有描述这种行为。
据我了解,查询失败,因为可能有some
个房间,其中access_key
会为此roomAccess()
失败。
但是我似乎找不到解决方法。
答案 0 :(得分:1)
我的问题是我应该一直在检查
resource.data.allow_anonymous == true || request.auth.uid != null
,因为我想在用户通过身份验证或公开的情况下进入会议室。
在这种情况下,access_key
查询检索到的所有文档都与安全性约束相符