Как установить базу данных реального времени в соответствии с данными? - PullRequest
1 голос
/ 07 ноября 2019

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

Я не имею ни малейшего представления установить правила для firebase. Моя структура данных выглядит следующим образом.

{
  "chat" : {
    "-L1223434cI8qG1eLQUyj" : {
      "User" : {
        "_id" : "66b2-4bac-abe1-fe89a0e29a28",
        "name" : "aaaabbbccc"
      },
      "friendID" : "8bcd-4b62-bb4e-25b7c1df4ca2",
      "text" : "hello",
      "timestamp" : 1573113592492
    }

Я хочу сравнить _id со всеми аутентифицированными пользователями, которые у меня есть в приложении, и хочу предоставить доступ пользователю, который использует только его / ее идентификатор.

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете достичь желаемого результата с помощью следующих правил безопасности, использующих встроенную переменную auth, которая содержит информацию о текущем вошедшем в систему пользователе:

{
  "rules": {
    "chat": {
      "$msg_id": {
        // grants write access to the owner of this message
        // whose uid must exactly match the value of _id
        ".write": "data.child("User/_id").val() === auth.uid",
        // grants read access to the owner or recipient of this
        // message whose uid must exactly match the saved uids
        ".read": "data.child("User/_id").val() === auth.uid || data.child("friendID").val() === auth.uid"
      }
    }
  }
}

Я рекомендую прочитать Защита данных и User Based Security документация для получения более подробной информации, которая объясняет концепции лучше, чем повторение здесь.

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