【问题标题】:Firebase security rules problemsFirebase 安全规则问题
【发布时间】:2018-10-09 13:50:42
【问题描述】:

我在制定 Firebase 的安全规则时遇到了一些问题。我总是被拒绝。

理想情况下,这就是我希望它的结构。为了更容易读取数据。如果某个模型不存在。用户将能够为该汽车创建一个部分并将他的帖子放在那里。但是当另一个用户想要发布相同的车型时。他只会添加到帖子列表中。

{
   "rules":{
      ".read":"auth != null",
      "Cars":{
         "$anyCar":{
            "$postName":{
               ".write":"auth != null",
               ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid"
            }
         }
      }
   }
}

这就是我为此数据库实施规则的方式。

{
   "Volvo":{
      "-KM_nqDpB78ZM0SE485F":{
         "color":"-10053121",
         "comments":0,
         "date":10,
         "id":1231,
         "uid":"45738372-3b72-4328-aa99-a00c05482973",
         "rating":0,
         "topic":"Volvo is a safe car",
         "user":"Brahim"
      }
   }
}

这是我在模拟器上尝试的json。 我在使用模拟器时通过了身份验证,并且我正在尝试使用位置 /Cars

【问题讨论】:

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


    【解决方案1】:

    根据您的安全规则,您可以写帖子,但不能创建新帖子

    "$postName":{
      ".write":"auth != null",
      ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid"
            }
    

    您应该允许在 $anycar 节点中进行写访问,并且可能只允许该特定用户编辑帖子

       {
       "rules":{
          ".read":"auth != null",
          "Cars":{
            "$anyCar":{
              ".write":"auth != null",
              "$postName":{
               ".write": "auth.uid == newData.child('uid').val()"
               ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString()"
              }
            }
          }
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2020-09-06
      • 2016-07-16
      相关资源
      最近更新 更多