首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使Firebase Realtime数据库节点仅供2个特定用户访问?

是否可以使Firebase Realtime数据库节点仅供2个特定用户访问?
EN

Stack Overflow用户
提问于 2021-10-17 06:52:09
回答 1查看 38关注 0票数 0

我正在用Firebase做一个聊天应用。

因为我没有订阅Cloud Functions,所以我使用的是“聊天室”的模式,如果你进入聊天室,你可以和其他人聊天。

在我的模型中,聊天室只有两个人。

在数据库中,表示只有这两个用户才能访问这个聊天室。

这是我的Firebase rtdb安全文件

代码语言:javascript
复制
"chat": {
  "$chatroomid": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

这只允许经过身份验证的用户访问聊天室中的内容。

但如果你通过了认证,并且不知何故知道了聊天室的id,你就可以作为第三人加入。

我想阻止这种情况发生。

我知道这不能直接使用Firebase的功能来完成。有没有我可以申请的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 14:42:18

为了允许安全访问,您需要在数据库中有一个位置来存储有权访问给定房间ID的UID。

代码语言:javascript
复制
"room_members": {
  "chatroom1": {
    "uidOfUser1": true,
    "uidOfUser2": true
  },
  "chatroom2": {
    "uidOfUser2": true,
    "uidOfUser3": true
  }
}

通过上述结构,您可以通过以下方式保护对房间本身的访问:

代码语言:javascript
复制
"chat": {
  "$chatroomid": {
    ".read": "auth != null && 
              root.child('room_members').child(chatroomid).child(auth.uid).exists()",
    ...
  }
}

另请参阅:Best way to manage Chat channels in Firebase了解更多关于建模的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69601976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档