如何根据同级节点保护Firebase节点?
我需要在Firebase中实现一些规则来保护我的数据 假设我有nodea和nodeb。结构如下:如何根据同级节点保护Firebase节点?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我需要在Firebase中实现一些规则来保护我的数据 假设我有nodea和nodeb。结构如下: { a: [ a1: {uid: 123}, a2: {uid: 321}, a3: {uid: 567} ], b: [ a1: {data: 'foo.bar'}, a2: {data: 'foo.bar'}, a3: {data: 'foo.bar'}
{
a:
[
a1: {uid: 123},
a2: {uid: 321},
a3: {uid: 567}
],
b:
[
a1: {data: 'foo.bar'},
a2: {data: 'foo.bar'},
a3: {data: 'foo.bar'}
]
}
如上例所示,a的子节点是节点b的键。如何根据节点a的uid限制对节点b的数据的访问
比如说。在节点a中具有uid123的用户,其密钥是a1,因此,在节点b中,只能从子节点a1(b->a1)检索数据。我认为这样的规则系统符合您的要求:
{
“规则”:{
“b”:{
“$key”:{
.read:“auth.uid==root.child('a').child($key).child('uid').val()”,
.write:“auth!==null”
}
}
}
}
在本例中,$key
是一个与节点b
列表下的任何键匹配的键
然后,我们可以使用此$key
变量将匹配到a
下相应节点的uid
,使用
结果是,只有当a
下具有相同键的相应子级的uid
与当前用户的uid
匹配时,才会授予b
下的子级读取权限