配置正确安全规则后Firestore写入触发PERMISSION_DENIED报错求助
问题排查与修复方案
- 第一个核心问题是规则路径末尾多余斜杠导致匹配失效
你当前写的路径是match /enums/{test}/,末尾多了一个斜杠,Firestore安全规则的路径匹配逻辑对格式要求严格,多余的末尾斜杠会导致规则无法匹配到/enums集合下的任意文档,自然会返回无匹配allow语句的错误。
修正后完整规则写法:rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 去掉路径末尾的多余斜杠 match /enums/{test} { allow read; allow write: if request.auth.token.admin == true; } } } - 第二个潜在问题是规则代码缺少闭合括号
你贴出的规则片段末尾缺少两个闭合的},分别对应外层的文档匹配块和服务声明块,如果实际部署到Firebase的规则就是未闭合的状态,会导致规则整体解析失败,所有路径匹配逻辑都不会生效。 - 可选适配场景:如果你需要对
enums集合下的文档子集合也生效该规则,可以将路径修改为match /enums/{test}/{document=**},实现递归匹配该集合下的所有层级资源。
验证建议
你可以直接使用Firebase控制台安全规则页自带的「规则游乐场」功能,选择写入操作、填入对应的enums下的文档路径、手动添加自定义声明admin: true,即可快速验证修改后的规则是否正常生效,无需从客户端反复发起请求调试。
内容的提问来源于stack exchange,提问作者christianbauer1
相关产品推荐
相关产品推荐

