2016-10-09 4 views
1

У меня есть эта структура в БД Firebase:Firebase безопасности дочерний узел

[bets] 
     -KTd9VKWJwHd_L6j_oAF 
     date 
     team1 
     etc 
     -KTdCc7uVmueNtcYzU1m 
     date 
     team1 
     etc 
    [users] 

Я сейчас пытаюсь написать Firebase правила, чтобы позволить пользователям читать только ставки, возложенные на них. Но я сразу столкнулся с проблемами. У меня есть эти самые основные правила:

{ 
    "rules": { 
    "bets": { 
     "$bet": { 
     ".read": true, 
     ".write": true 
     } 
    } 
    } 
} 

Когда я пытаюсь посетить /bets (где отображается список ставок) Я вышвырнут ошибку:

Error: permission_denied at /bets: Client doesn't have permission to access the desired data. 

Если я вместо этого поместить .read и .write под bets вместо $bet, он отлично работает. Что мне не хватает?

ответ

3

Firebase оценивает разрешение на чтение в том месте, где вы прикрепляете слушателя. Вы присоединяете слушателя к /bets, поэтому он отклоняет слушателя, так как у вас нет разрешения на чтение на /bets.

Если у вас есть разрешение на чтение /bets, вы также можете прочитать все под ним. Таким образом, это означает, что вы не можете использовать правила безопасности базы данных Firebase для фильтрации данных.

См. Раздел rules are not filters в документации по пожарной базе. Или найдите здесь Firebase questions mentioning "rules are not filters", и вы увидите, что это общая ошибка для разработчиков.

Смежные вопросы