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

Firebase实时数据库规则报错:auth对象属性访问无效如何解决?

解决Firebase实时数据库规则中auth对象的无效属性访问问题

问题根源

报错Invalid property access on 'auth' object是因为Firebase实时数据库规则不允许通过动态变量索引(比如auth[xxx])访问auth对象的属性。用户的自定义Claims(扩展的用户认证信息)必须通过auth.token.字段名的方式直接访问,不能用变量作为属性键。

原代码逻辑修正

你的Bolt代码中,auth[parent_uuid].projectUuid这类写法不符合规则语法,同时部分逻辑的判断方向存在混淆。调整后的核心逻辑是:通过用户自定义Claims中的projectUuid和projectParentUuid字段,匹配当前项目ID或父项目ID,以此判断访问权限。

修正后的Bolt代码

path /projects {
  read() { false }
  write() { false }
  
  /{project_uuid} {
    read() {
      projectMatch(project_uuid, this.parent_uuid)
    }
  }
}

function projectMatch(project_uuid, parent_uuid) {
  return (
    // 若当前项目有父项目ID,且用户所属项目等于该父项目ID
    (parent_uuid != null && auth.token.projectUuid == parent_uuid) ||
    // 用户直接属于当前项目
    (auth.token.projectUuid == project_uuid) ||
    // 用户的父项目ID等于当前项目ID
    (auth.token.projectParentUuid == project_uuid)
  );
}

关键注意事项

  1. 自定义Claims配置:必须通过Firebase Admin SDK为用户设置projectUuid和projectParentUuid这两个自定义Claims字段,否则规则会因字段不存在而返回false。示例Admin SDK代码(Node.js):
admin.auth().setCustomUserClaims(uid, {
  projectUuid: "你的项目ID",
  projectParentUuid: "父项目ID(可选)"
});
  1. 规则语法规范:Firebase实时数据库规则中,auth对象的属性只能是已知的固定字段(如auth.uid、auth.token.email)或你自定义的Claims字段,禁止使用动态表达式作为属性键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:35:19