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