Как защитить паролем определенные узлы в базе данных Firebase Realtime - PullRequest
0 голосов
/ 06 июня 2018

Я создаю чат-комнату с базой данных Fireabse Realtime Database и хочу, чтобы некоторые комнаты были защищены паролем.У меня есть приблизительное представление о том, как это может сработать, но у меня возникают проблемы с его полной реализацией.Скажем, моя структура выглядит следующим образом:

Chatrooms : {
    -randomID : {
        roomName: 'Chatroom 1',
        password: 'foobar' 
        messages: {
          ...
        }
    }
}

Я мог бы настроить структуру безопасности как таковую для помещений, которым требуется пароль:

'Chatrooms' : {
    -randomID : {
        'roomName': 'Chatroom 1',
        'password': 'foobar',
        '.read': "data.child('validatedUsers/*user's uid*').val() === true",
        'validatedUsers' : {
            *user's uid* : true,
            *other user's uid* : true,
            ...
        }
        'messages': {
          '.read': false
          ...
        }
    }
}

Таким образом (насколько я понимаю) я могудобавьте пользователя, которому был предоставлен доступ к объекту validatedUsers, и, если он находится в списке, верхний уровень .read переопределит чтение «сообщений».

Моя проблема в том, что я не могу найти безопасный способ получить пароль, сравнить его с введенным пользователем, а затем ввести их в объект validatedUsers.Поскольку это было бы небезопасно, клиенту не понадобилась бы какая-нибудь облачная функция для проверки?Теперь, когда я думаю об этом, мне, скорее всего, понадобится облачная функция для хэширования пароля?

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