Правило безопасности Firestore: добавление данных на основе значения метки времени - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу прочитать или записать некоторые данные из / в пожарное хранилище, основываясь на правиле безопасности, которое заставляет пользователя корректировать дату его локального компьютера, должно быть правильным, что означает ни прошлое, ни будущее. Если время клиентского компьютера не верно, он делает не иметь возможности читать или записывать данные;

Теперь я попробовал с правилом безопасности

 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,
  });

Заранее спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

request.resource.data.timestamp == request.time.toMillis().Дайте ему немного больше свободы (например, 10 с):

math.abs(request.resource.data.timestamp - request.time.toMillis()) < 10000;
...