Правила безопасности Firestore позволяют опубликовать один документ

1

Я работаю над программой Angular, использующей Firestore, здесь у меня есть функция бронирования. Я хочу, чтобы пользователи публично читали и записывали заказы, если в одном из документов имеется reference_no.

Вот как структурирован мой документ:

Изображение 174551

Это мои текущие правила безопасности:

service cloud.firestore {
  match /databases/{database}/documents {

   match /jobs/{job} {
        allow read, write: if request.resource.data.property.reference_no == resource.data.property.reference_no;
   }

   match /{document=**} {
      allow read, write: if isSignedInUser();
    }

    //functions

    function isSignedInUser(){
        return request.auth.uid != null;
    }
  }
}

Вот как я обращаюсь к этому:

findByReferenceNo(reference_no): Observable < any > {
  return this.afs
    .collection(this.jobsCollection, ref => ref.where('property.reference_no', '==', reference_no))
    .snapshotChanges()
    .pipe(
      map((actions) => {
        return actions.map((snapshot) => {
          const data = snapshot.payload.doc.data();
          const id = snapshot.payload.doc.id;
          return {
            id,
            ...data
          };
        });
      })
    );
}

Но не знаю, почему я получаю: Error: Missing or insufficient permissions. Примечание. Я не подписываюсь при доступе к этому.

Теги:
firebase
firebase-security-rules
google-cloud-firestore

1 ответ

0

Насколько я знаю, чтобы гарантировать выполнение запросов, правила безопасности Firestore проверяют ваш запрос, а не каждый отдельный документ. Это означает, что запрос разрешен только в том случае, если правила могут подтвердить, что запрос не будет получать больше данных, чем разрешено.

В вашей текущей модели это просто невозможно, потому что это потребует, чтобы правила безопасности проверяли каждый отдельный документ. Для некоторых примеров запросов, которые можно защитить, ознакомьтесь с документацией Firestore по обеспечению запросов.

  • 0
    Можно ли проверить, поступает ли запрос с определенного URL?
  • 0
    Нет. Это было бы довольно легко подделать.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню