Firebase проверить правило. Как заставить работать правила? - PullRequest
0 голосов
/ 05 октября 2019

Данные в Firebase имеют следующую структуру:

emailsLending
|___-LqQFYK-iI8a8qe2msVk
    |___email
    |___serverTimestamp

Я написал следующие правила проверки записи в поле электронной почты:

{
  "rules": {
    "emailsLending": {
      "$emailsLending_id": {
        ".indexOn": "email",
        "email": {
          ".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"   
        }
      }
    }
  }
}

Но когда я записываю данные в электронную почтуполе с помощью функции облака, правило не применяется, и я могу написать что-нибудь, например, «123».

Что я делаю не так?

1 Ответ

0 голосов
/ 05 октября 2019

Облачные функции запускаются с правами администратора и по умолчанию обходят правила безопасности вашей базы данных.

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

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

...