Firestore自定义声明权限问题:路径变量myDocId未被解析?
Firestore自定义声明权限规则问题解析
问题核心
你写的规则里request.auth.token.myDocId没有按预期解析变量,根源在Firestore安全规则的属性访问语法规则:
- 用
.(点符号)访问对象属性时,myDocId会被当作固定的属性名,规则会去token里找名为"myDocId"的键,而不是用当前文档ID(myId123)作为键去匹配。 - 手动写成
request.auth.token.myId123时,点符号正好匹配你设置的自定义声明键,所以权限校验能通过。
正确写法
要让规则把myDocId当作变量(当前文档ID)去匹配token里的键,必须用方括号语法,修改后的规则如下:
match /myCollection/{myDocId} { allow read, write: request.auth.token[myDocId]; }
补充说明
你在设置自定义声明时用了JavaScript的计算属性名{[myId123]:true},能把变量值作为键。Firestore规则语法类似,但访问计算属性必须显式用方括号,不能直接用点符号,这就是你之前忽略的关键点。
内容的提问来源于stack exchange,提问作者esafresa
相关产品推荐
相关产品推荐

