我有以下形式的数据库
Database
users
<UID>
user
<other information>
我正在尝试以管理员模式阅读所有用户,并且只允许个人用户访问自己的信息。
我正在尝试这条规则:
"users": {
"$uid": {
".read": "auth != null && (auth.uid == $uid || root.child('users').child(auth.uid).child('user').child('admin').val() == true)",
".write": "auth != null && !newData.child('admin').exists() && (auth.uid == $uid || root.child('users').child(auth.uid).child('user').child('admin').val() == true)"
},
".indexOn": ["userid"]
},
我正在执行以下查询,我看到以下错误:
allusers = $firebaseArray(firebaseDataService.root.child('users'));
permission_denied at / users:客户端无权访问所需数据。
知道我在这里做错了吗?
答案 0 :(得分:2)
将听众附加到/users
时,Firebase服务器会检查您是否具有/users
的读取权限。如果没有,它会拒绝听众。
对于Firebase新手来说,这是一个常见的混淆源。来自SQL /关系思维模式,我们习惯使用安全性来执行(服务器端)过滤。在Firebase中,您无法使用安全规则来过滤数据。
我将在下面添加一些相关链接以供进一步阅读: