我正在用Firebase做一个聊天应用。
因为我没有订阅Cloud Functions,所以我使用的是“聊天室”的模式,如果你进入聊天室,你可以和其他人聊天。
在我的模型中,聊天室只有两个人。
在数据库中,表示只有这两个用户才能访问这个聊天室。
这是我的Firebase rtdb安全文件
"chat": {
"$chatroomid": {
".read": "auth != null",
".write": "auth != null"
}
}这只允许经过身份验证的用户访问聊天室中的内容。
但如果你通过了认证,并且不知何故知道了聊天室的id,你就可以作为第三人加入。
我想阻止这种情况发生。
我知道这不能直接使用Firebase的功能来完成。有没有我可以申请的方法?
发布于 2021-10-17 14:42:18
为了允许安全访问,您需要在数据库中有一个位置来存储有权访问给定房间ID的UID。
"room_members": {
"chatroom1": {
"uidOfUser1": true,
"uidOfUser2": true
},
"chatroom2": {
"uidOfUser2": true,
"uidOfUser3": true
}
}通过上述结构,您可以通过以下方式保护对房间本身的访问:
"chat": {
"$chatroomid": {
".read": "auth != null &&
root.child('room_members').child(chatroomid).child(auth.uid).exists()",
...
}
}另请参阅:Best way to manage Chat channels in Firebase了解更多关于建模的信息。
https://stackoverflow.com/questions/69601976
复制相似问题