You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore中使用auth.uid作为路径的语法咨询

Firestore安全规则中用auth.uid作为数据路径的正确写法

Firestore安全规则的语法逻辑和实时数据库有差异,你需要根据实际数据结构选择对应写法,以下是两种常见场景的正确示例:

场景1:集合中以用户UID为文档ID存储数据

对应实时数据库中/roles/{uid}的结构(每个用户UID对应一个节点存角色),Firestore里如果有roles集合,文档ID就是用户UID,规则写法如下:

  • 若文档含role字段存储权限:
get(/databases/$(database)/documents/roles/$(auth.uid)).data.role == 'admin'
  • 若文档直接将值设为admin(无嵌套字段):
get(/databases/$(database)/documents/roles/$(auth.uid)).data == 'admin'

场景2:单个文档内的映射字段以UID为键

对应实时数据库中某节点下直接用UID作为键的结构(比如/settings下存{"user123": "admin"}),Firestore里如果是单个文档的映射字段:

  • 若映射是文档内的子字段(比如字段名为userRoles):
resource.data.userRoles[auth.uid] == 'admin'
  • 若映射直接是文档顶层结构:
resource.data[auth.uid] == 'admin'

你的错误写法说明

resource.data.request.auth.uid == 'admin' 逻辑完全错误:

  • request.auth.uid 是当前登录用户的UID(字符串值),并非数据字段的键
  • resource.data 指向当前规则作用的文档数据,无法通过它访问request对象的内容

内容的提问来源于stack exchange,提问作者Bernhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:35:23