【问题标题】:Granting access to Firebase locations to a group of users向一组用户授予对 Firebase 位置的访问权限
【发布时间】:2013-01-23 23:44:50
【问题描述】:

我在文档中找不到它,但有没有办法定义一组用户并使用该组授予对不同位置的访问权限,而不是授予单个用户访问权限?

问候, LT

【问题讨论】:

    标签: firebase


    【解决方案1】:

    Firebase 中没有明确支持“组”,因为您可以很容易地自己表示它们。根据您的情况,这里有两个选项。

    在 firebase 中存储组信息。

    以下数据可用于表示 2 个组(“alpha”和“beta”)和 3 条受保护数据(“thing1”、“thing2”和“thing3”)

    {
      "groups": {
        "alpha": {
          "joe": true,
          "sally": true
        },
        "beta": {
          "joe": true,
          "fred": true
        }
      },
      "data": {
        "thing1": {
          "group": "alpha"
          /* data accessible only by the "alpha" group */
        },
        "thing2": {
          "group": "beta"
          /* data accessible only by the "beta" group */
        },
        "thing3": {
          "group": "alpha"
          /* more data accessible by the "alpha" group */
        }
      }
    }
    

    那么我们可以使用以下规则来强制执行安全性:

    {
      "rules": {
        "data": {
          "$thing": {
            ".read":  "root.child('groups').child(data.child('group').val()).hasChild(auth.id)",
            ".write": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)"
          }
        }
      }
    }
    

    那么,如果我使用 { id: 'sally' } 作为我的身份验证对象进行身份验证,我将可以访问 thing1 和 thing3,但不能访问 thing2。

    在身份验证令牌中存储组信息。

    如果您正在生成自己的身份验证令牌,并且您知道用户在进行身份验证时所在的组,则可以将组列表存储在您生成的身份验证令牌中。例如,当您为用户“fred”生成身份验证令牌时,包括“{ id: 'fred', groups: { alpha: true, beta: true } }”

    然后您可以通过以下方式强制组成员身份:

    {
      "rules": {
        "data": {
          "$thing": {
            ".read": "auth[data.child('group').val()] != null",
            ".write": "auth[data.child('group').val()] != null"
          }
        }
      }
    }
    

    【讨论】:

    • Michael,感谢您的快速响应,第一个选项正是我们正在寻找的。​​span>
    • 如果您想为多个组(而不仅仅是一个组)授予对 data.$thing 的访问权限怎么办?有没有类似 .hasAnyChild() 或类似的东西?
    • 第一个 JSON 对象到底去哪儿了?这定义了组、alpha、beta 等?我认为您不能将其放入实际的规则安全对象中……除非我遗漏了什么?
    • 正确。它只是存在于您的数据库中的普通数据。
    猜你喜欢
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2014-08-11
    • 1970-01-01
    • 2020-09-27
    相关资源
    最近更新 更多