Firebase Security Rules查询时拦截请求问题求助
解决Firestore CollectionGroup查询的权限拒绝问题
你的问题出在安全规则的路径匹配范围上:当前规则仅匹配根目录下的cases集合,但collectionGroup查询会遍历所有层级中名为cases的子集合,现有规则无法覆盖这些子集合的权限校验,导致权限拒绝。
修正后的安全规则
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 使用递归通配符匹配任意父路径下的cases集合 match /{path=**}/cases/{id} { allow read: if resource.data.isTest != true; } } }
关键说明
/{path=**}/cases/{id}是Firestore规则中针对集合组查询的标准写法:{path=**}是递归通配符,匹配任意数量的父路径段(比如users/{userId}/cases/{id}、projects/{projId}/cases/{id}等所有层级的cases子集合);- 确保所有参与collectionGroup查询的
cases集合都能触发对应的权限校验逻辑。
额外验证点
如果你的业务需要限制仅登录用户访问,可以在规则中叠加身份校验:
allow read: if request.auth.uid != null && resource.data.isTest != true;
内容的提问来源于stack exchange,提问作者Daniel Grima
相关产品推荐
相关产品推荐

