firebase - 如何使用密码保护 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 对象中。因为这样做不安全,所以客户端我需要某种云功能来进行检查吗?现在我考虑一下,我可能需要一个云函数来散列密码?
解决方案
推荐阅读
- java - 如何在html中定义embed标签的字体样式
- java - CachedRowSet 上的左外连接
- scala - 将 mapType 列添加到现有 DataFrame
- mysql - 创建models.py的时候发现row size太大的问题,怎么解决
- python - 使用 np.einsum 替换 for 循环
- macos - brew cask install kdiff3 失败
- batch-file - 如何在批处理脚本中运行多个 EXE、打开文件和 XCOPY
- elasticsearch - 在摄取管道中使用搜索模板
- kafka-consumer-api - 由于错误 %!s(int32=1)]]/%!d(MISSING) 放弃代理 %!d(MISSING),Filebeat 未流式传输到 kafka
- c++ - /usr/bin/ld: 找不到 -lopencv_nonfree