Нужно ли явно определять правила безопасности для каждой подколлекции? - PullRequest
0 голосов
/ 14 марта 2019

Рассмотрим пример из документации 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>;
        }
    }
  }
}

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

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

1 Ответ

0 голосов
/ 14 марта 2019

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

ваше правило должно выглядеть примерно так:

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

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

...