管理员的FireBase安全规则是只读的,即使它们被设置为False [英] Firebase security rules for admin read only even though they're set to false

查看:18
本文介绍了管理员的FireBase安全规则是只读的,即使它们被设置为False的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序中有一个节点,用户可以写入但无法读取。

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"
    }
  }
}

推荐答案

运行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()"

这篇关于管理员的FireBase安全规则是只读的,即使它们被设置为False的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆