【发布时间】:2016-07-16 22:52:42
【问题描述】:
{
"rules": {
"verifications": {
// Can only request verification code if it's been one minute than previous request.
"$phoneNumber": {
".validate": "!data.exists() || (newData.child('timestamp').val() > data.child('timestamp').val() + 60000)"
}
},
".read": true,
".write": true
}
}
此规则适用于 Firebase 模拟器,如果时间戳不晚 1 分钟,则写入过程会被拒绝。但是当我尝试从服务器写入时,它通过了规则并且允许写入过程。
代码:
var data = {
timestamp: 1468664575179
};
var phoneNumber = '+14253452';
firebase.database().ref(`verifications/${phoneNumber}`).set(data, function(err) {
console.log(err);
});
我想知道为什么 Firebase 模拟器上的写入过程被拒绝,但当请求来自服务器时允许。
这并没有给出原因: Firebase Security Rules work in simulator, but not in code
【问题讨论】:
-
显示一个数据库结构示例。感觉
ref('verifications/${+14253452}')不对。 -
其实是${phoneNumber},phoneNumber的值为'+14253452'
标签: javascript firebase firebase-realtime-database firebase-security