【问题标题】:Using Reference in Security Rule在安全规则中使用引用
【发布时间】:2017-10-07 09:10:27
【问题描述】:

假设有两个文档

/orgs/foo
/users/alice

/users/alice 有一个引用类型字段org,它引用/orgs/foo

/orgs/foorequest.auth.uid == 'alice' 时应该可以访问。我该怎么做?

我猜是这样的,但我无法弄清楚。也就是说,如何获取被引用文档的ID?

function isOrgMember(orgId) {
  return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
}

match /orgs/{orgId} {
  allow read: isOrgMember(orgId);
}

【问题讨论】:

    标签: firebase firebase-security google-cloud-firestore


    【解决方案1】:

    我知道距离最初的问题已经有一段时间了,但我遇到了类似的问题,希望这可以帮助您或其他人。

    您的情况是: get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;

    但是org 是一个参考,这(显然)意味着你也需要get 它。试试这个: get(get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org).id == orgId;

    【讨论】:

      猜你喜欢
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2018-04-14
      • 2017-04-17
      相关资源
      最近更新 更多