Как написать правила безопасности для firebase firestore при запросе данных и в случае, когда мы не использовали аутентификацию firebase? - PullRequest
2 голосов
/ 24 мая 2019

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

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

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write : if true;
    }
  }
}

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

1 Ответ

0 голосов
/ 27 мая 2019

К разрешают только пользователям, которые аутентифицируются с помощью Firebase, доступ к данным , ваши правила будут следующими:

allow read, write: if request.auth.uid != null;

Невозможно сделать то же самое без Аутентификации Firebase, так какединственный способ передать данные о пользователе в правила безопасности - через Аутентификацию Firebase.

Если у вас есть собственный механизм аутентификации, вы можете реализовать его в качестве пользовательского провайдера в Firebase Authentication .При таком подходе вы используете код на стороне сервера для генерации токена Firebase на основе информации, которую вы имеете о пользователе, и информация из этого токена затем становится доступной в правилах безопасности в auth.token.

...