我得到了这样的firebase数据库结构:
firebase.database().ref("chat/user2/user3/chat2").set({
message: "HAHA"
});
问题是,如何阻止用户( user1 )从 user3 向 user2 撰写聊天消息。
示例:
我 user1 , javascript 命令
{{1}}
上面的命令说我作为 user1 从 user3 为 user3 撰写新聊天消息" HAHA&# 34; 即可。我想用firebase规则来防止这种情况。我可以帮助我如何编写规则并使用登录方法吗?
谢谢。
答案 0 :(得分:1)
看起来你的结构如下:
chats
$recipientUid
$senderUid
$chatMessageId
确保只有发件人可以写:
{
"rules": {
"chat": {
"$recipientUid": {
"$senderUid": {
".write": "auth.uid == $senderUid"
}
}
}
}
}
更常见的是,在聊天室结构中的特定用户之间存储消息。见Best way to manage Chat channels in Firebase
答案 1 :(得分:0)
您是否尝试过firebase documentation的数据结构? 因为在你的情况下,我认为这样做是不可能的,因此你需要弄平你的数据库结构。即使你可能能够使用通配符,但它仍然很难做到,因为在一个客户端只有一个uid,因此你无法真正写出#34;聊天消息"在其他用户的节点中,不知道他们在前端的uid。
我的建议是,尝试通过思考"聊天参与者如何访问他们自己的聊天数据库来修改结构?"你可以简单地使用每个用户可以写入自己节点的规则#34;聊天室"其他人可以阅读。 CMIIW
的问候,
R上。微米。