首页 > 解决方案 > 如何使用密码保护 Firebase 实时数据库中的某些节点

问题描述

我正在创建一个带有 Fireabse 实时数据库后端的聊天室,并且我希望某些房间受到密码保护。我对它如何工作有一个粗略的想法,但我无法完全充实它。说我的结构是这样的:

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
          ...
        }
    }
}

这种方式(据我了解)我可以添加已被授予访问 validUsers 对象的用户,如果他们在列表中,那么顶级 .read 将覆盖“消息”读取。

我的问题是我想不出一种安全的方法来获取密码,检查用户输入的内容,然后将它们输入到 validUsers 对象中。因为这样做不安全,所以客户端我需要某种云功能来进行检查吗?现在我考虑一下,我可能需要一个云函数来散列密码?

标签: firebasefirebase-realtime-database

解决方案


推荐阅读