我有一个家庭, A,b,c,d , A 是领导者。我们有一个入侵者, E 。我们只想 b,c,d 来读/写A的数据。
所有这些字母(b,c d,...)都是UID的
这是我到目前为止所做的:
所有人都通过电子邮件进行身份验证。人们向 A 发送请求以允许他的群组。如果他接受,他们可以读/写他的。
设计数据库Firebase
{
"Leaders" : {
"A" : {
"ALLOWED" : {
"b" : 0,
"c" : 0,
"d" : 0
},
"DATA" : {
"blah blah1" : "content writable by bcd",
"blah blah2" : "content writable by bcd"
},
"REQUESTS" : {
"E" : 0
}
}
}
}
我可以使用CRUD来移动 b,c,d ,但是如何制定规则以便只有允许中的人才能读/写每个领导者的数据?
{
"rules": {
".read": "auth != null",
".write": "auth != null"
"Leaders":{
".write": "$uid == ????"
}
}
}
感谢您的帮助!
答案 0 :(得分:4)
应该检查节点是否存在于当前领导者之下:
{
"rules": {
"Leaders":{
"$leaderuid": {
".write": "$leaderuid == auth.uid",
"DATA": {
".write": "data.parent().child('ALLOWED').child(auth.uid).exists()"
}
}
}
}
}
我改变的事情:
auth.uid
DATA
节点中存在uid,则用户只能在ALLOWED
下撰写。