Я могу записывать данные, но не могу читать в Firebase - PullRequest
0 голосов
/ 08 октября 2019

Я новичок в Firebase. У меня проблема с правилами безопасности Firebase. Я могу записать данные в базу данных Firebase, но не могу прочитать записанные данные. Моя база данных выглядит как -

user|
    |_uid(auto-generated)
         |
         |_name:Bob
         |_score:100
         |_email:bob@gmail.com

Мое правило базы данных Firebase выглядит как -

"user":{
       "$uid":{
              "uname":{

".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
                    },
              "score":{
".read":"$uid=== auth.uid",
".write":false
                    },
              "email":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
                      }
}}

Я проверил с помощью симулятора, и все (и чтение, и запись) идет нормально. Но я не могу читать из моего приложения, хотя я вошел в учетную запись. Когда я устанавливаю все чтение и запись в истинный верхний $ uid узел, все чтение и запись из моего приложения тоже ОК. Но я хочу разрешить чтение только уполномоченному лицу

Я уже выполнил поиск в stackoverflow, но нет решения для этого.

Извините за мой английский навык письма.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019
  1. Если вы использовали push () при создании uid внутри пользовательского узла, то authid и uid не совпадают. Они имеют разные значения. УБЕДИТЕСЬ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ ОДИН ИСПОЛЬЗОВАННЫЙ ОДИН ИЗ

     firebaseauth.getinstance().getcurrentuser().getuid()
    
  2. Если вы хотите разрешить людям делать что-то только с их данными, вы можете использовать следующий набор правил.

    {
    "rules": {
    "user": {
       "$uid": {
         ".read": "$uid === auth.uid",
         ".write": "$uid === auth.uid"
       }
      }
     }
    }
    
  3. У вас есть имя узла, но уровень, указанный в правилах, не указан ...

0 голосов
/ 08 октября 2019

Поскольку вы используете базу данных в реальном времени, лучший способ справиться с этим - создать child authorized, а затем сохранить все авторизованные uid в этом дочернем элементе, а затем установить свои правила следующим образом: `" rules ":

 {
    ".read": true,
    ".write": "root.child('authorized').hasChild(auth.uid)"
  }
}`

вы можете обратиться к этому проекту, чтобы увидеть пример реализации

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