And*_*ndi 5 firebase firebase-security google-cloud-firestore
编辑:似乎是Firestore中的一个开放问题.另见这篇文章.
在Google Cloud Firestore中,我想为groups 的集合建模.每个组包含一个name,它的列表user和一些secretGroupData.对我来说,这样做的自然方式是:
/groups
/group1 {
name: "Group 1"
users: { //object can be queried, simple array not
"user1": true,
"user5": true
}
secretGroupData: ...
}
/group2 { ... }
Run Code Online (Sandbox Code Playgroud)
鉴于用户喜欢user1,我想查询他所属的所有群组.此查询工作正常:
groupsRef.where("users.user1", "==", true)
Run Code Online (Sandbox Code Playgroud)
但是,我想保护组数据.只有所有用户都可以读取所有组时,此查询才有效.当我通过规则保护组只能由组成员可读时
match /groups/{groupId} {
allow read: if resource.data.users[request.auth.uid] == true;
}
Run Code Online (Sandbox Code Playgroud)
上述查询不再起作用,因为只要它看到当前用户不是其成员的组,就会拒绝读访问,并且整个查询都会失败.
Firestore中此问题的最佳解决方案是什么?我是不是该
groups并忽略其他的,而不是抛出错误?如果是这样,我怎么能做到这一点?group所有users 的s可读并移入secretGroupData子集合,然后我可以限制对组成员的访问/users/user1/groupIds: ["group1"])中来添加冗余,因此我事先知道这些组并可以通过ID查询它们非常感谢你的想法.
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |