Firestore规则是否区分大小写?我的数据库路径是否存在错误?
Firestore规则权限问题排查与解决
核心问题大概率是集合名称大小写不匹配:Firestore的集合名称严格区分大小写,若规则里写的集合名(比如小写
projects)和实际数据库里的Projects(首字母大写)不一致,规则就无法匹配对应集合,所有操作会因默认拒绝策略失败。之前保留
document=**时能正常工作,是因为这个通配符会匹配任意路径下的所有文档,不管集合名大小写,相当于放开了所有权限;一旦换成具体的集合路径匹配,大小写不匹配就会让规则失效。
具体排查与修复步骤
- 严格核对规则中的集合路径和Firestore控制台里的集合名称,确保大小写完全一致。比如实际集合是
Projects,规则里的匹配路径就要写成/Projects/{document},而非/projects/{document}。 - 用Firestore规则模拟器测试:在Firebase控制台的规则页面,使用模拟器模拟读/写操作,选择对应的集合路径,模拟器会明确告知规则匹配失败的原因,帮你快速定位问题。
- 修正后的规则示例(匹配大写
Projects集合):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /Projects/{projectDoc} { allow read, write: if request.auth != null; // 如果有嵌套集合,继续按正确大小写匹配 match /NestedCollection/{nestedDoc} { allow read, write: if request.auth != null; } } } }
内容的提问来源于stack exchange,提问作者Gijs Verwiel
相关产品推荐
相关产品推荐

