Flutter调用Firestore集合组获取数据遇权限拒绝错误怎么解决?
解决Firestore集合组查询权限拒绝问题
问题原因
你当前的Firestore规则中,postData子集合的权限配置嵌套在/user/{userId}路径下,但集合组查询需要顶层的显式匹配规则。集合组查询会遍历所有名为postData的子集合,Firestore不会匹配嵌套在其他文档路径内的权限规则,因此触发了权限拒绝错误。
修正后的Firestore规则
将postData的权限规则移到顶层,确保覆盖所有路径下的postData子集合:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 保留原有的user文档权限 match /user/{userId} { allow read, write: if true; } // 顶层匹配所有路径下的postData子集合,支持集合组查询 match /{path=**}/postData/{postDataId} { allow read, write: if true; } } }
额外说明
- 如果需要更严格的权限控制(比如仅允许登录用户访问),可以将
if true替换为request.auth != null等条件,根据业务需求调整。 - 修改规则后,等待Firestore规则生效(通常几秒到几分钟),再重新运行Flutter代码即可正常获取集合组数据。
内容的提问来源于stack exchange,提问作者sub
相关产品推荐
相关产品推荐

