Firebase 数据库:添加规则以从所有子项中查找特定值
Firebase Database: add rule to find a particular value out of all childs
我想为我的数据库设置安全规则,我只希望 users 和 admins 从这个特定的组中读取,但我的规则不起作用。
只有当我设置特定索引时才有效。我不知道如何检查所有索引。这在某种程度上可能吗?
数据库:
规则:
{
"rules": {
"groups": {
"$groupid": {
".write": "!data.exists()",
".read": "data.child('users').child('$index').val() == auth.uid || data.child('admins').child('$index').val() == auth.uid"
}
},
"users": {
"$uid": {
".read": "auth != null",
".write": "$uid === auth.uid"
}
}
}
}
我建议你把数据库结构改成这样。将用户id作为users
和admins
的子键
{
"groups": {
<groupId1>: {
"admins": {
<uid1>: true,
<uid2>: true
},
"description": "some description",
"users": {
<uid3>: true,
<uid4>: true,
<uid5>: true
},
...
},
<groupId2>: {
...
}
}
}
那么这个数据库规则就可以完成工作
{
"rules": {
"groups": {
"$groupid": {
".write": "!data.exists()",
".read": "data.child('users').child(auth.uid).val() == true || data.child('admins').child(auth.uid).val() == true"
}
}
}
}
希望这对您有所帮助:)
我想为我的数据库设置安全规则,我只希望 users 和 admins 从这个特定的组中读取,但我的规则不起作用。
只有当我设置特定索引时才有效。我不知道如何检查所有索引。这在某种程度上可能吗?
数据库:
规则:
{
"rules": {
"groups": {
"$groupid": {
".write": "!data.exists()",
".read": "data.child('users').child('$index').val() == auth.uid || data.child('admins').child('$index').val() == auth.uid"
}
},
"users": {
"$uid": {
".read": "auth != null",
".write": "$uid === auth.uid"
}
}
}
}
我建议你把数据库结构改成这样。将用户id作为users
和admins
{
"groups": {
<groupId1>: {
"admins": {
<uid1>: true,
<uid2>: true
},
"description": "some description",
"users": {
<uid3>: true,
<uid4>: true,
<uid5>: true
},
...
},
<groupId2>: {
...
}
}
}
那么这个数据库规则就可以完成工作
{
"rules": {
"groups": {
"$groupid": {
".write": "!data.exists()",
".read": "data.child('users').child(auth.uid).val() == true || data.child('admins').child(auth.uid).val() == true"
}
}
}
}
希望这对您有所帮助:)