我有这个结构的数据库:
public: {
UID_1: { ... }, UID_2: { ... }, ...
}
users : {
UID_1: { ... }, UID_2: { ... }, ...
}
而且我想设置权限,只允许适当的用户(uid 所有者)读/写“用户”,并允许每个人读取“public”,并为适当的用户(uid 所有者)写入。 现在我有
{
"rules": {
"users": {
"$uid": {
".read": "auth.uid === $uid",
".write": "auth.uid === $uid",
},
},
"public": {
"$uid": {
".read": "auth.uid !== null",
".write": "auth.uid === $uid",
}
}
}
}
但是当我试图列出来自“公共(public)”的所有职位时
this.db.child('public').once('value', snapshot => { ... }
它找不到任何值(value)。当我将整个“公共(public)”读/写设置为 true 时,它就起作用了。
直觉在这里不起作用
最佳答案
目前没有人对/public
有读权限,但是每个登录用户都对它下面的每个节点有读权限。要能够从某个位置读取,您需要在该位置 的读取权限。
因此,要解决此问题,请将 /public
中的 .read
规则上移一层:
"public": {
".read": "auth.uid !== null",
"$uid": {
".write": "auth.uid === $uid",
}
}
关于javascript - Firebase 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206060/