Firebase 规则:“auth”对象上的属性访问无效

问题描述 投票:0回答:1

我使用的是 Firebase 实时数据库(不是 Firestore),并且 Firebase 规则存在问题。

我正在使用 bolt 来生成规则:

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

function projectMatch(project_uuid, parent_uuid) {
  return (
    (
      ( 
        parent_uuid != null && 
        parent_uuid == auth[parent_uuid].projectUuid

      ) ||
      ( project_uuid == auth[project_uuid].projectUuid ) ||
      ( project_uuid == auth[project_uuid].projectParentUuid )
    )
  );
}

bolt 文件编译成功,但是当我将规则粘贴到 Firebase 中时,以下行会产生错误

Invalid property access on 'auth' object
:

data.child('parent_uuid').val() == auth[data.child('parent_uuid')].projectUuid

我应该如何调整我的代码才能使该规则发挥作用?

firebase-realtime-database firebase-security
1个回答
0
投票

尝试以下方法

不要使用 auth[parent_uuid].projectUuid,而是尝试使用 auth[parent_uuid]['projectUuid']。这将确保我们正确访问 auth 对象的 projectUuid 属性。

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

function projectMatch(project_uuid, parent_uuid) {
  return (
    (
      ( 
        parent_uuid != null && 
        parent_uuid == auth[parent_uuid]['projectUuid']

      ) ||
      ( project_uuid == auth[project_uuid]['projectUuid'] ) ||
      ( project_uuid == auth[project_uuid]['projectParentUuid'] )
    )
  );
}

尝试一下并告诉我

© www.soinside.com 2019 - 2024. All rights reserved.