仅允许管理员写入数据-Firebase Realtime数据库-安全规则

时间:2020-08-01 19:00:48

标签: firebase firebase-realtime-database firebase-authentication firebase-security

我仅向具有 isAdmin:true 的经过身份验证的用户授予 .write 权限 下面是数据库的结构。 在 clients (用户)节点中, uid 是Firebase生成的身份验证uid。

{
  "clients" : {
    "-M8bGQaB....." : {
      "isAdmin" : true,
      "uid" : 5gvR1GzT...
     }
   },
  "products" : {
    "-M81GzT....." : {
     "productName": "Product 1"
      },
    "-M81GzT....." : {
     "productName": "Product 2"
    }
}

1 个答案:

答案 0 :(得分:0)

使用当前数据结构无法在安全规则中查找用户个人资料,因为安全规则无法在所有用户中搜索。

这就是为什么用于存储用户的正确数据结构使用其UID作为键的原因。在您的情况下,看起来像是:

  "clients" : {
    "5gvR1GzT..." : {
      "isAdmin" : true
     }
   },

使用此JSON,然后您只能允许用户使用以下方式将其UID的isAdmin属性设置为true时编写产品:

{
  "rules": {
    "products": {
      "$productid": {
        ".write": "root.child('clients').child(auth.uid).child('isAdmin').val() == true"
      }
    }
  }
}