Беспорядок в правилах Firebase для моего приложения - PullRequest
0 голосов
/ 20 октября 2019

У меня проблемы с написанием разрешений firebase. Я хочу, чтобы эти пользователи, если они прошли проверку подлинности, записывали только в раздел пользователей, а все остальные должны иметь возможность читать или записывать в любой раздел базы данных. Есть ли способ, которым я могу определить правила для каждой таблицы по умолчанию в true и ограничить только пользовательский раздел для аутентификации, или я должен явно написать правила для каждой таблицы.

PS. Было бы замечательно, если бы кто-то мог подсказать мне, какие правила я должен реализовать для приложения с функциями для отправки и получения сообщения со следующей структурой:

-Chat

-Friends

-Users

-message_notifications

-messages

-уведомлений

  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {

      "Users":{
      "$uid":{
            ".read": true,
             ".write": "auth.uid == $uid"
      }
    }

  }

}

1 Ответ

1 голос
/ 20 октября 2019

Можно ли как-то определить правила для каждой таблицы по умолчанию в true и ограничить аутентификацию только пользовательского раздела?

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

Что вы можете сделать, это использовать правила подстановки $ для создания двух типовузлов верхнего уровня:

{
  "rules": {
    "Users":{
      "$uid":{
        ".read": true,
         ".write": "auth.uid == $uid"
      }
    },
    "$others": {
      ".read": true,
      ".write": true
    }
  }
}

С вышеупомянутыми правилами пользователи могут:

  • Только читать узел /Users/$uid пользователя, если они знают UID этого пользователя.
  • Может писать только свой собственный узел /Users/$uid.
  • Может читать и записывать все остальные данные.
...