Правила безопасности Firebase: публичные и личные данные
У меня есть коллекция подписей, где каждая подпись имеет несколько свойств: public: полное имя, город и затем электронная почта.
Я хочу, чтобы свойство электронной почты было приватным, и я изо всех сил пытался написать правильные правила, чтобы вернуть только полное имя и город. Вот как выглядит мой rules.json:
{
"rules": {
"signatures": {
"$signatureID": {
"public": {
".read": true
},
"email": {
".read": false
}
}
}
}
}
Когда я перехожу к конечной точке / подписи, я хотел бы получить массив подписей с общедоступными данными и не получать адреса электронной почты.
Пока что мне не повезло, что все заработало так, как я хочу. Я делаю что-то неправильно? Должен ли я структурировать свои данные по-другому?
1 ответ
Что касается правил безопасности, операции Firebase выполняются по принципу "все или ничего".
В результате при попытке загрузить все данные в /signatures
потерпит неудачу, потому что у вашего клиента нет разрешения на чтение всех данных в этом месте, хотя у вас есть разрешение на чтение некоторых данных там. Аналогично, запись в местоположение ведет себя так же, и для продолжения работы требуется полное разрешение.
Чтобы справиться с этим вариантом использования, рассмотрите возможность реструктуризации ваших данных следующим образом:
{
"rules": {
".read": false,
".write": false,
"signatures-public": {
".read": true,
"$signatureID": {
// ... public data here
}
},
"signatures-private": {
"$signatureID": {
// ... private data here
}
}
}
}