Firebase验证工作非常出乎意料

时间:2018-01-16 21:46:03

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

我有以下firebase验证:

{
  "rules": {
    ".read": true,
    "companies": {
      ".write": "newData.exists()", 
        ".validate": "newData.hasChildren([
          'companyName',
        ])",
        "companyName": { 
          ".validate": "newData.isString()" 
        },                          
      }
    }
  }

关注 JSON

const r = { companyName: "exampleName" }

当我在console.firebase.google.com的firebase控制台中开始模拟时,一切顺利 - 模拟最终取得了成功。但是,当我尝试使用简单的功能提交数据时,始终拒绝请求。 Error: PERMISSION_DENIED: Permission denied

负责它的逻辑非常简单:

const companyRef = firebase.database().ref('companies').push();

companyRef.set(r, (err) => {  
   if (err) {
     console.log(err);       //   <-------- always appears :/
   }
})

注意非常有趣事实是,如果我从validate删除firebase rules部分,我可以毫无问题地上传数据...所以我认为这对于验证来说是奇怪的......

向前寻求任何帮助。感谢:)

修改

{
  "rules": {
    ".read": true,
    "companies": {
      "$companyId": {
        ".read": true,
        ".write": true, 
        ".validate": "newData.hasChildren([
          'companyEmail',  
          'companyName',
        ])",
        "companyEmail": { 
          ".validate": "newData.isString()" 
        },
        "companyName": { 
          ".validate": "newData.isString()" 
        },
      }
    }
  }
}

0 个答案:

没有答案