Как настроить правила базы данных Firebase Realtime только для чтения дочернего узла? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть узел с именем profile, у которого есть список идентификаторов.Я хочу разрешить доступ на чтение только дочерним узлам и запретить чтение всех профилей.

Это то, что у меня есть в правилах, но это позволяет читать все профили.

{
  "rules": {
      "profiles":{
        ".read": true,
        ".write": false  
      }
  }
} 

и этоэто то, что у меня под профилями

{
  "1" : {
    "id" : "1",
    "name" : "test1"
  },
  "2" : {
    "id" : "1",
    "name" : "test2"
  }
}

1 Ответ

0 голосов
/ 18 февраля 2019

Как правило, вы будете хранить профиль каждого пользователя под ключом, который имеет значение их UID аутентификации Firebase.Итак:

{
  "profiles": {
    "uidOfUser1": {
      "id" : "1",
      "name" : "test1"
    }
    "uidOfUser2": {
      "id" : "2",
      "name" : "test2"
    }
  }
}

В этом случае вы можете защитить его следующими правилами:

{
  "rules": {
    "profiles": {
      "$user_id": {
        // grants read access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".read": "$user_id === auth.uid"
      }
    }
  }
}

В правилах безопасности значение auth.uid - это UID пользователя, который в данный моментвошел в Firebase Authentication.Подделать это значение невозможно, поэтому это отличный способ обеспечить доступ к данным.Вышеуказанные правила позволяют пользователю читать определенный профиль, когда его auth.uid соответствует ключу профиля.Так что uidOfUser1 или uidOfUser2.

Также ознакомьтесь с документацией Firebase по защите пользовательских данных , которая описывает ее более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...