【发布时间】:2019-05-02 15:53:06
【问题描述】:
我需要控制对 firebase rtdb 中用户目录中用户对象下各个属性的访问。我目前的规则如下:
{
"rules": {
"users": {
"$uid": {
"name": {
".write": "auth.uid === 'adminID' || $uid === auth.uid",
".read": "auth.uid === 'adminID' || $uid === auth.uid"
},
"plans": {
".write": "auth.uid === 'adminID' || $uid === auth.uid",
".read": "auth.uid === 'adminID' || $uid === auth.uid"
},
"survey": {
".write": "auth.uid === 'adminID' || $uid === auth.uid",
".read": "auth.uid === 'adminID' || $uid === auth.uid"
},
"survey_done": {
".write": "auth.uid === 'adminID' || $uid === auth.uid",
".read": "auth.uid === 'adminID' || $uid === auth.uid"
},
"notes": {
".write": "auth.uid === 'adminID'",
".read": "auth.uid === 'adminID'"
},
"status": {
".write": "auth.uid === 'adminID'",
".read": "auth.uid === 'adminID'"
}
}
},
"sending": {
".write": "auth.uid === 'adminID'",
".read": "auth.uid === 'adminID'"
}
}
}
管理员应该能够访问所有数据,但是当我在我的网络应用程序上以他的身份登录时,我收到了 permission_denied 错误。
此外,用户(不是管理员)应该能够看到他们的name, plans, survey and survey_done 属性,但其他受管理员保护的属性都看不到。当用户向users/their-user-id 发出读取请求时,我收到与上述相同的错误。理想情况下,它只会返回用户有权访问的所有属性,但用户访问这些属性的唯一方法是单独读取对它们的请求。
我正在使用的查询是:
firebase.database().ref("users").child(id).once("value")
【问题讨论】:
-
请编辑问题以显示您尝试使用的查询。
标签: firebase firebase-realtime-database firebase-authentication firebase-security