Нужно ли явно определять правила безопасности для каждой подколлекции?

Рассмотрим пример из документации Firebase.

service cloud.firestore {
  match /databases/{database}/documents {
    match /cities/{city} {
      allow read, write: if <condition>;

        // Explicitly define rules for the 'landmarks' subcollection
        match /landmarks/{landmark} {
          allow read, write: if <condition>;
        }
    }
  }
}

Здесь подколлекция ориентир ориентиры имеет явные правила безопасности. Предположим, у меня есть другие подколлекции под города. Если правила, которые я хочу для них, такие же, как и для города, нужно ли мне определять их как отдельные блоки, как ориентир ориентиры? Или я могу изменить /cities/{city} на /cities/{city=**}?

Какой подход будет лучшим? Спасибо за уделенное время.

да, вы должны определить явно

pepe 14.03.2019 10:10

Любая ссылка на это или это неявно вытекает из руководств: P?

John Dough 14.03.2019 11:32
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
2
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

судя по вашему вопросу, я думаю, что у вас есть две подколлекции: ориентиры и столицы. Поэтому вам нужно другое правило для подколлекции «ориентиры». Чтобы добиться этого, вы должны явно определить правило безопасности каждой подколлекции.

ваше правило должно быть чем-то вроде этого,

service cloud.firestore {
match /databases/{database}/documents {
match /cities/{city} {
  allow read, write: if <condition>;

    // Explicitly define rules for the 'landmarks' subcollection
    match /landmarks/{landmark} {
      allow read, write: if <condition>;
    }

 // Explicitly define rules for the 'capital' subcollection
    match /capital/{capitals} {
      allow read, write: if <condition>;
    }
}
}
}

если вы напишете такое правило

service cloud.firestore {
match /databases/{database}/documents {
match /cities/{city=**} {
  allow read, write;
}
}
 }

это правило будет применяться для каждой подколлекции в коллекции городов, даже если вы явно пишете правило для какой-то подколлекции.

Отредактируйте свой ответ, потому что вы сказали две подколлекции «города и достопримечательности». Это должны быть «столицы и достопримечательности», как в вашем примере. Тогда примем как ответ, поскольку он кажется правильным.

John Dough 14.03.2019 11:49

Другие вопросы по теме