向一组用户授予对Firebase位置的访问权限
我在文档中找不到它,但是有没有一种方法可以定义一组用户并使用该组授予对不同位置的访问权限,而不是授予单个用户的访问权限 问候,,向一组用户授予对Firebase位置的访问权限,firebase,Firebase,我在文档中找不到它,但是有没有一种方法可以定义一组用户并使用该组授予对不同位置的访问权限,而不是授予单个用户的访问权限 问候,, LTFirebase中没有对“组”的明确支持,因为您可以非常轻松地表示它们。根据您的情况,这里有两种选择 在firebase中存储组信息。 以下数据可用于表示2组(“alpha”和“beta”)和3条受保护数据(“thing1”、“thing2”和“thing3”) 然后,我们可以使用以下规则强制执行安全性: { "rules": {
LTFirebase中没有对“组”的明确支持,因为您可以非常轻松地表示它们。根据您的情况,这里有两种选择 在firebase中存储组信息。 以下数据可用于表示2组(“alpha”和“beta”)和3条受保护数据(“thing1”、“thing2”和“thing3”) 然后,我们可以使用以下规则强制执行安全性:
{
"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”生成auth令牌时,包括“{id:'fred',组:{alpha:true,beta:true}”
然后,您可以通过以下方式强制组成员资格:
{
"rules": {
"data": {
"$thing": {
".read": "auth[data.child('group').val()] != null",
".write": "auth[data.child('group').val()] != null"
}
}
}
}
Michael,感谢您的快速响应,第一个选项是我们正在寻找的。如果您想授予数据访问权限,该怎么办?多个组(而不是一个组)可以使用$thing?是否有类似于.hasAnyChild()或类似的东西?第一个JSON对象到底放在哪里?定义了组、alpha、beta等?我不认为你可以把它放到实际的规则安全对象中。。。除非我遗漏了什么?没错。它只是数据库中的普通数据。
{
"rules": {
"data": {
"$thing": {
".read": "auth[data.child('group').val()] != null",
".write": "auth[data.child('group').val()] != null"
}
}
}
}