Angular приложение не может получить доступ к базе данных Firestore? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть приложение angular с соответствующим firebaseConfig, в котором правильно настроен apiKey. Когда приложение инициализируется, оно должно go к соответствующему Firestore и собирать адреса электронной почты там и сохранять их для последующей аутентификации пользователя. Проблема заключается в том, что приложение не может сделать это, пока не вошел пользователь. Это сбивает с толку, потому что я думал, что приложение может получить доступ к базе данных Firestore без , когда кто-то уже аутентифицирован. Единственный обходной путь, который мне удалось найти, - это установить правила Firestore, чтобы разрешить глобальный доступ для чтения. Таким образом, когда приложение запускается, оно гарантированно получает доступ к базе данных и электронной почте в ней.

Что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Если ваши правила безопасности такие:

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

Тогда только если пользователь аутентифицирован, он может получить доступ к данным. Вы можете изменить свои правила следующим образом:

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }

        match /{collectionName}/{docId} {
      allow read: if collectionName == 'emailCollection';
    }
  }
}

Таким образом, если пользователь прошел проверку подлинности, он может получить доступ ко всем документам, а если имя коллекции равно emailCollection, то пользователь, не прошедший проверку подлинности, может получить доступ. ит.

https://firebase.google.com/docs/firestore/security/rules-structure#overlapping_match_statements

0 голосов
/ 03 марта 2020

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

...