{
"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 Simulator上で動作し、タイムスタンプが1分以内でないと書き込みプロセスが拒否されました。しかし、私がサーバーから書き込もうとしたとき、それはルールに合格し、書き込みプロセスは許可されました。Firebaseルールはサーバー要求では機能しませんが、Simulator上で動作します
コード:
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}')のような気がします。 – theblindprophet
実際には$ {phoneNumber}、phoneNumberの値は '+14253452' –