我要基于强制用户更正其本地计算机日期的安全规则从Firestore读取数据或向Firestore写入一些数据,这应该是正确的,既不是过去也不是未来。如果客户端计算机时间不正确,则他会这样做没有读写数据的能力;
现在我已经尝试使用安全规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read:if true;
allow create: if (request.resource.data.timestamp == request.time.toMillis());
}
}
}
但是它总是显示一条消息,显示权限被拒绝。如何实现??
我的代码是
batch.set(ref, {
timestamp: new Date().valueOf(),
name: formData.name ? formData.name.toLowerCase() : null,
type: formData.type ? formData.type : 'percentage',
rate: isNaN(formData.rate) ? 0 : Number(formData.rate),
date1: formData.date1 ? new Date(formData.date1) : null,
date2: formData.date2 ? new Date(formData.date2) : null,
time1: formData.time1 ? formData.time1 : null,
time2: formData.time2 ? formData.time2 : null,
id: ref.id,
createdAt: firebase.firestore.FieldValue.serverTimestamp(),
typeArray,
enabledDays: dateArray,
isActive: true,
isTotalEnabled: formData.dOnTotal,
});
预先感谢
答案 0 :(得分:1)
request.resource.data.timestamp == request.time.toMillis()
。给它更多的回旋余地(例如10 s):
math.abs(request.resource.data.timestamp - request.time.toMillis()) < 10000;