#javascript #firebase #firebase-realtime-database #firebase-security
# #javascript #firebase #firebase-база данных в реальном времени #firebase-безопасность
Вопрос:
Я использую Firebase и хочу разрешить запись на дочернем элементе, но не на родительском.
У меня есть коллекция, которая называется guests . Пользователи могут устанавливать для него данные, используя свой идентификатор пользователя, записывая данные в: guests/userId Я хочу запретить пользователю записывать данные для guests: /guests .
Это мои правила:
{
"rules": {
".read": false,
".write": false,
"guests": {
".write": "newData.exists()",
}
}
}
С помощью приведенных выше правил пользователь может запускать обе команды:
guests.child(userId).set(profileData);
guests.set(profileData);
Я хочу создать правило, запрещающее ему запускать вторую строку: guests.set(profileData);
Ответ №1:
Вы можете использовать подстановочный знак для идентификатора пользователя:
"rules": {
".read": false,
".write": false,
"guests": {
".read": false,
".write": false,
"$user_id": {
".write": "newData.exists()",
}
}
}
Комментарии:
1.
".read": false,
И".write": false,
нижеguest
не нужны, поскольку они уже унаследованы от корня.