firebase-database
Правила базы данных Firebase Realtime
Поиск…
замечания
Правила базы данных Firebase Realtime определяют, кто имеет доступ к вашей базе данных для чтения и записи, как структурированы ваши данные и какие индексы существуют. Эти правила живут на серверах Firebase и автоматически применяются в любое время. Каждый запрос на чтение и запись будет выполнен только в том случае, если ваши правила позволяют это сделать. По умолчанию ваши правила настроены на то, чтобы разрешить только доступным для чтения и записи доступ к вашей базе данных только аутентифицированным пользователям. Это делается для защиты вашей базы данных от злоупотреблений до тех пор, пока у вас не будет времени для настройки ваших правил или настройки аутентификации.
Правила базы данных Firebase имеют синтаксис типа JavaScript и входят в четыре типа:
авторизация
Идентификация вашего пользователя является лишь частью безопасности. Как только вы знаете, кто они, вам нужен способ контролировать свой доступ к данным в вашей базе данных. Правила базы данных Firebase позволяют вам контролировать доступ для каждого пользователя. Например, вот набор правил безопасности, которые позволяют кому-либо читать путь /foo/ , но никто не должен писать ему:
{
"rules": {
"foo": {
".read": true,
".write": false
}
}
}
.read и .write cascade, поэтому этот набор правил предоставляет доступ для чтения к любым данным на пути / foo /, а также к любым более глубоким путям, таким как /foo/bar/baz . Обратите внимание, что .read и .write правила, разрешающие доступ, будут переопределять другие правила в базе данных, которые не разрешают доступ; другими словами, все применимые правила .read и .write вместе). Таким образом, чтение чтения /foo/bar/baz все равно будет предоставлено в этом примере, даже если правило на пути /foo/bar/baz оценивается как false.
Правила базы данных Firebase включают встроенные переменные и функции, которые позволяют ссылаться на другие пути, временные метки на стороне сервера, информацию об аутентификации и т. Д. Ниже приведен пример правила, предоставляющего доступ на запись для аутентифицированных пользователей /users/<uid>/ , где ID пользователя, полученного через Firebase Authentication.
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
Проверка данных
База данных Firebase Realtime является схематичной. Это позволяет легко менять вещи по мере развития, но как только ваше приложение будет готово к распространению, важно, чтобы данные оставались неизменными. Язык правил включает правило .validate которое позволяет применять логику проверки с использованием тех же выражений, которые используются для .read и .write . Единственное отличие состоит в том , что все соответствующие правила проверки должны оценить, правда , для того , для записи будет разрешено (другими словами, все применимые .validate правил вместе , чтобы операция AND разрешить запись базы данных).
Это правило обеспечивает, чтобы данные, записанные в /foo/ должны были содержать строку менее 100 символов:
{
"rules": {
"foo": {
".validate": "newData.isString() && newData.val().length < 100"
}
}
}
Правила проверки имеют доступ ко всем тем же встроенным функциям и переменным, что и правила .read и .write . Вы можете использовать их для создания правил проверки, которые знают данные в другом месте в вашей базе данных, личность пользователя, время сервера и многое другое.
Определение индексов базы данных
База данных Firebase Realtime позволяет заказывать и запрашивать данные. Для небольших размеров данных база данных поддерживает специальные запросы, поэтому индексы, как правило, не требуются во время разработки. Прежде чем запускать приложение, важно указать индексы для любых запросов, которые вы должны обеспечить, чтобы они продолжали работать по мере роста вашего приложения.
Индексы задаются с .indexOn правила .indexOn . Вот пример объявления индекса, который будет индексировать по высоте и длине поля для списка динозавров:
{
"rules": {
"dinosaurs": {
".indexOn": ["height", "length"]
}
}
}
