javascript - firebase - 安全规则 REST

标签 javascript firebase firebase-realtime-database firebase-security

我正在尝试 Firebase 并且对 security rules 感到好奇.

假设您有一个 Firebase 数据集,简单表示为:

{
 "myNewData" : "Some String"
}

如何编写规则,以便只有写入的对象才具有键名称 myNewData

我使用 POST 方法,Firebase 中的数据结构如下:

-myFireBaseapp
  -someData
       -RandomFirebaseKey
           -myNewData
       -RandomFirebaseKey
           -myNewData

在我想出的模拟器中

{
  "rules": {
      ".read":true,
        "$someData":{
       ".write":true,         
        ".validate": "newData.hasChild('myNewData')"
        }

    }
  }

它在模拟器中有效,但在 postman 中无效。

发布

http://myfirebase.app.bucket/someData.json

   {
     "myNewData" : "Some String"
    }

感谢您提供任何信息。

最佳答案

如果您希望您的数据始终有一个 key /someData/<anyKey>/myNewData任何值,您都可以使用

进行验证
{
  "rules": {
      ".read":true,
      "someData":{
          "$anyKey": {
              ".write":true,         
              ".validate": "newData.hasChild('myNewData')"
          }
       }
   }
 }

如果你眯着眼睛,你仍然可以看到这些规则中的路径/someData/$anyKey/myNewData .

如果您还想验证 myNewData 的值是一个字符串,您可以将规则扩展为:

{
  "rules": {
      ".read":true,
      "someData":{
          "$anyKey": {
              ".write":true,         
              ".validate": "newData.hasChild('myNewData')",
              "myNewData": {
                  ".validate": "data.isString()"
              },
              "$other": {
                  ".validate": false
              }
          }
       }
   }
 }

我还添加了"$other: { ".validate": false }到最后一个示例,这确保使用任何非指定键的写入都会被拒绝。所以现在/someData/$anyKey只能包含 myNewData属性是一个字符串。

这一切都在 Using $ Variables to Capture Path Segments 上的 Firebase 文档中进行了介绍。 ,我强烈建议学习。

关于javascript - firebase - 安全规则 REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670043/

相关文章:

angular - Ionic4:任务 ':app:processDebugManifest' 执行失败

javascript - Cloud Functions for Firebase onWrite 超时

javascript - Firebase 不适用于 Cordova

javascript - 标签的动态下拉菜单

swift - 由于信号段错误 11,Xcode 8 随机命令失败

firebase - 错误 : Failed to get Firebase project project-name. 请确保该项目存在并且您的帐户有权访问它

java - ArrayList的值在匿名内部类之外是不同的

javascript - Aurelia 要求 html 导入不起作用

javascript - 如何在 Javascript 中缩放 Sprite

javascript - 使用 Webpack 模拟 &lt;script&gt; 标签