Документация, к которой вы обращаетесь, защищает узел каждого отдельного сообщения.Так что /messages/-LDR_...ADvS
доступен, если он не слишком старый.
Но ваш запрос читает из /messages
, где вы никому не дали разрешения.
Это пример одного изНаиболее распространенные ошибки в правилах безопасности Firebase: правила не являются фильтрами.Более подробно об этом я рекомендую проверить, что раздел правила не являются фильтрами в документации Firebase, этот первый вопрос, объясняющий это , или некоторые из многих вопросов, упоминающих "правила не являютсяфильтры с тех пор.
Но в этом году ситуация немного изменилась. Хотя правила безопасности по-прежнему нельзя использовать для фильтрации данных, их можно использовать для проверки запросов. Например, см. этот пример из документация по правилам на основе запросов :
"baskets": {
".read": "auth.uid != null &&
query.orderByChild == 'owner' &&
query.equalTo == auth.uid" // restrict basket access to owner of basket
}
Это позволяет читать /baskets
как ваш запрос по owner == uid
. Итак, теперь мы даем пользователюдоступ к /baskets
, но только если они удовлетворяют условию, указанному в наших правилах безопасности на стороне сервера.
К сожалению, в последний раз, когда я проверял, текущий timestamp
не был доступен в запросе, что делало невозможным записьправила, разрешающие только ваш обходной запрос.