Firestore - запретить чтение нескольких документов одновременно - PullRequest
0 голосов
/ 06 января 2020
  • У меня есть коллекция Firestore.

  • Идентификаторы документов являются секретными. Вы должны быть в состоянии прочитать только тот документ, идентификатор которого вы знаете. Ради простоты. Я хотел бы придерживаться этого подхода.

  • Однако по умолчанию можно прочитать всю коллекцию из Firestore, например

await firestore.collection("secret_documents").get()

Можно ли разрешить чтение только одного документа за один раз, только если на него ссылается его идентификатор?

1 Ответ

2 голосов
/ 06 января 2020

Да, это на самом деле довольно легко. Чтобы контролировать доступ к документам, используйте правила безопасности Firebase для Firestore .

По умолчанию ваши правила безопасности будут read и write, но на самом деле их можно разбить на больше гранулярных операций get, list, create и update. И вы пытаетесь разрешить get, но не list операцию. Из документации:

service cloud.firestore {
  match /databases/{database}/documents {
    // A read rule can be divided into get and list rules
    match /cities/{city} {
      // Applies to single document read requests
      allow get: if <condition>;

     // Applies to queries and collection read requests
      allow list: if <condition>;
    }
    ...

Так что разрешить get для всех и запретить list звонки:

allow get: if true;
allow list: if false;

Возможно, вы захотите уточнить немного по правилу allow get, потому что более распространено его ограничение, например, для пользователей, вошедших в ваш проект с помощью аутентификации Firebase:

allow get: if request.auth.uid != null;

https://firebase.google.com/docs/firestore/security/rules-query

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...