2016-03-22 3 views
0

У меня есть объекты в моей Firebase, и я хочу ограничить доступ только к пользователям, на которые ссылаются объекты. Моя структура Firebase выглядит следующим образом:Firebase Security: Только пользователи, на которые ссылается объект, должны прочитать его

  • Объект
    • object_info
    • контакты
      • $ contact_id
        • user_id
        • USER_ROLE
  • пользователи
    • $ user_id
      • user_info

объект/контакты/$ contact_id/user_id ссылки на пользователей/$ user_id

Таким образом, каждый пользователь, который должен иметь доступ выглядит как user_id у одного ребенка из контактов. К сожалению, я не могу найти способ поиска всех детей контактов для определенного user_id. Есть ли способ установить это правило безопасности Firebase, если я должен изменить всю структуру базы данных, чтобы сохранить ее в безопасности?

ответ

0

Вы можете проверить наличие узла пользователя:

{ 
    "Object": { 
    ".read": "data.child('contacts').child(auth.uid).exists()" 
    } 
} 
+0

, к сожалению, я не могу. child data.child («контакты»). child (auth.uid) никогда не будет существовать. Пользовательский ключ в auth.uid хранится на одном слое глубже в контакте, который хранит больше информации, чем пользовательский ключ. Это связано с тем, что мне нужно работать с контактами, которые еще не зарегистрированы, и когда они регистрируются, я могу просто обновить ссылку на пользователя, не обновляя все, связанное с этим контактом. – Alexander

+0

В этом случае это не сработает, и вам нужно будет изменить свою модель данных, чтобы использовать прецедент, который вы пытаетесь реализовать. –

+0

Спасибо! Любые рекомендации по достижению этого? Проблема в том, что если я напрямую ссылаюсь на пользователя, мне придется искать все, связанное с этим объектом, и проверить, появится ли контакт где-нибудь, чтобы обновить ключ контакта. – Alexander

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

  • Нет связанных вопросов^_^