我的应用程序中有一个节点,用户可以对其进行写入,但不能对其进行读取。
let specialNodeRef = dbRef.child("specialNode").childByAutoId()
specialNodeRef.updateChildValues(dict)
有没有一种方法可以设置规则,使只有管理员可以从该节点读取,即使在使用控制台之外将规则设置为false?
{
"rules": {
"users": {
"$uid": {
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
},
"specialNode": {
".read": false, // users can't read but admin can
".write": "auth.uid != null"
}
}
}
发布于 2018-05-30 09:08:57
运行Firebase Admin SDK或通过Firebase控制台访问数据库的用户使用管理权限访问数据库。它们始终可以读/写,因此不受".read": false
的影响。
如果要将应用程序的一个/某些用户声明为具有特定权限,则可以在规则中包括他们的Firebase身份验证UID:
".read": "auth.uid = 'uidOfLance'"
更灵活的做法是将每个这样的用户的UID以如下形式存储在数据库中:
"admins": {
"uidOfLance": true,
"uidOfPuf": true
}
然后,您可以在安全规则中检查UID:
".read": "root.child('admins').child(auth.uid).exists()"
https://stackoverflow.com/questions/50594983
复制相似问题