Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 时事通讯注册表单的实时数据库规则_Javascript_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Javascript 时事通讯注册表单的实时数据库规则

Javascript 时事通讯注册表单的实时数据库规则,javascript,firebase-realtime-database,firebase-security,Javascript,Firebase Realtime Database,Firebase Security,我在我的网站上有一个单一的字段表单来注册一份时事通讯。它请求电子邮件地址并将其提交到Firebase数据库。我不希望任何人阅读它除了我,我不希望任何人能够更新或删除任何内容 我希望公众能够做的就是给数据库写一个电子邮件地址 这是我目前的规则: { "rules": { "emails": { "$uid": { ".write": "!data.exists()", "mail" : { ".vali

我在我的网站上有一个单一的字段表单来注册一份时事通讯。它请求电子邮件地址并将其提交到Firebase数据库。我不希望任何人阅读它除了我,我不希望任何人能够更新或删除任何内容

我希望公众能够做的就是给数据库写一个电子邮件地址

这是我目前的规则:

{
  "rules": {
    "emails": {
       "$uid": {  
         ".write": "!data.exists()",
           "mail" : {
             ".validate": "newData.val().matches(/^.*[@].*[.].*$/)"
           }

       }
     }
   }
}
这可以接受如下内容:

firebase.database().ref('emails').push().set({mail: "test@gmail.com"});
firebase.database().ref('emails').push().set({mail: "test"});
并否认类似的事情:

firebase.database().ref('emails').push().set({mail: "test@gmail.com"});
firebase.database().ref('emails').push().set({mail: "test"});
但仍然接受这一点:

firebase.database().ref('emails').push().set({test: "test"});
如何修复此问题?

您可能希望拒绝任何其他内容:

"$uid": {  
  ".write": "!data.exists()",
    "mail" : {
      ".validate": "newData.val().matches(/^.*[@].*[.].*$/)"
    },
    "$other": {
      ".validate": false
    }
}