为什么Firebase Firestore规则拒绝写入且判定`==`和`&&`条件为假
Firestore安全规则Playground测试条件判定为假的常见原因
你提供的规则本身语法没有问题,出现&&逻辑与、==相等判断返回假的问题,通常是以下几种原因导致:
- Playground认证参数配置错误
测试前请确认两个配置项:- 已在Playground面板中开启「已认证(Authenticated)」开关,否则
request.auth != null会直接返回假 - 认证信息中填写的
uid值,与你测试访问的/users/{id}路径中的id值完全一致,二者需要是完全相同的字符串,不可存在多余空格、大小写差异,也不要填成数字类型
- 已在Playground面板中开启「已认证(Authenticated)」开关,否则
- 测试路径不匹配当前规则
你给出的规则仅匹配/users/{id}层级的文档,如果你测试的是users文档下的子集合数据,不会命中该规则,默认走Firestore的拒绝逻辑 - auth参数层级配置错误
如果你在Playground中自定义了认证payload,需确保uid是request.auth下的直接属性,不要写到request.auth.token层级下,request.auth.token仅用于存储自定义声明字段 - 创建操作的文档ID不匹配
如果测试的是create权限,请确认你要创建的文档ID就是当前认证用户的uid,若选择自动生成文档ID,生成的ID和uid不一致会直接导致request.auth.uid == id判断为假
内容的提问来源于stack exchange,提问作者HaKim
相关产品推荐
相关产品推荐

