授予对Firebase位置的访问权限给一组用户

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

问候,
LT

最佳答案
在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’}作为我的auth对象进行身份验证,我将可以访问thing1和thing3,但不能访问thing2。

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

如果您生成自己的认证令牌,并且知道用户在认证时使用的组是什么,您可以将组列表存储在您生成的认证令牌中。例如,当您为用户’fred’生成auth令牌时,请包含“{id:’fred’,groups:{alpha:true,beta:true}}”

然后,您可以执行组成员资格:

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

转载注明原文:授予对Firebase位置的访问权限给一组用户 - 代码日志