Firebase имеет два права, которые Вы можете предоставить:
Там нет отдельного права, чтобы позволить поиск, так что это означает, что любой, кто может найти узел также может прочитайте этот узел.
Но вероятно существует обходное решение для решения вашей проблемы. Если мы предположим, что у вас есть узел пользователей, как это:
users
twitter:4368352
id:4368352
name: "lestyn Lewis"
email: "[email protected]"
twitter:209103
id:209103
name: "Frank van Puffelen"
email: "[email protected]"
Подсказка: это было бы хорошо, если бы вы могли бы обновить свой вопрос и указать фактическую структуру вашего узла пользователей.
С вышеуказанной структурой вы должны были бы предоставить пользователям .read
права на все узлы под Users
. Это позволит им читать не только адреса электронной почты и идентификаторы, но и любую другую информацию, которую вы можете сохранить на них.
Чтобы предоставить пользователям доступ только к подмножеству этих данных, вы можете дублировать эти данные на другой узел. Так что если вы хотите, чтобы разрешить всем пользователям поиска по адресу электронной почты, то вам необходимо добавить узел, который отображает адреса электронной почту жидкости:
users
twitter:4368352
id:4368352
name: "lestyn Lewis"
email: "[email protected]"
twitter:209103
id:209103
name: "Frank van Puffelen"
email: "[email protected]"
email_to_uid:
"[email protected]": "twitter:4368352"
"[email protected]": "twitter:209103"
Вы можете дать все права пользователей для поиска, но только дать доступ к полные пользовательские настройки к более ограниченному кругу пользователей:
"users" : {
".indexOn" : "email",
"$uid": {
".read": "auth === $uid",
".write": "auth.uid === $uid"
}
},
"email_to_uid" {
".read": "auth != null"
}
Обратите внимание, что вы в основном здании свой собственный индекс здесь, похоже на то, что ".indexOn": "email"
делает, так что вы можете контролировать то, что информация поступает в него и кто может получить доступ к Это.
Спасибо, я бы принял это раньше, но не получил письмо или его съел спам-папкой. Это тот подход, о котором я думал, по-прежнему не нравится, что он позволяет зарегистрированному пользователю перечислить все адреса моих пользователей, если они знают, что они делают, но это улучшение. Спасибо. –
Учитывая, что «возможность поиска» требует, чтобы вы могли прочитать эту информацию, вы не можете сделать ничего, кроме этого: создание промежуточного сервера/службы, выполняющей поиск. –
Итак, если адрес электронной почты пользователя изменяется, я полагаю, что необходимо выполнить некоторую логику для обновления ключа в индексе с новым адресом электронной почты? – Genu