我有用户数据库,我希望每个经过身份验证的用户都可以在其中读取和更新自己的数据。我还想设置一个管理员用户,该用户可以读取和更新数据库中所有用户的数据。
我尝试这样做-How to only allow one admin user to write Firebase Database?
但是效果不佳。
我的数据库结构是:
- Users
-key1
-email: xyz
-key2
-email: abc
这是我尝试过的。在这里,我在Firebase身份验证中添加了管理员用户,他的身份验证ID为-s94ZwBcP但是,我在该用户的数据库中没有任何密钥(因为我不需要它)。
"rules": {
"users":{
"$uid":{
".read" : "$uid == auth.uid || auth.uid === 's94ZwBcP'",
".write": "$uid == auth.uid || auth.uid === 's94ZwBcP'"
}
}
我的猜测是您正在尝试从/users
中读取内容。由于.read
上没有定义/users
规则,因此没有人可以读取该节点。
为了允许管理员获取(和修改)所有用户的列表,请将您的规则修改为:
"rules": {
"users":{
".read" : "auth.uid === 's94ZwBcP'",
".write": "auth.uid === 's94ZwBcP'",
"$uid":{
".read" : "$uid == auth.uid",
".write": "$uid == auth.uid"
}
}
}