当前位置: 首页 > 知识库问答 >
问题:

我如何在firebase数据库实时规则中限制用户只访问他们的消息?

王宜
2023-03-14

共有1个答案

吕霖
2023-03-14

要安全地允许access您的用户访问该节点下的数据子集,您需要两件事:

  1. 只选择希望它们访问的节点的查询。
  2. 只允许该查询的安全规则。

在这里认识到查询的必要性是很重要的,因为安全规则本身并不过滤数据。

var uid = firebase.auth().currentUser.uid;
var query = firebase.database().ref('messages').orderByChild('userId').equalTo(uid);
{
  "rules": {
    "messages": {
      ".read": "auth.uid != null &&
                query.orderByChild == 'userId' &&
                query.equalTo == auth.uid"
    }
  }
}
 类似资料:
  • 我当前的Android应用程序使用Firebase实时数据库。 我正在与安全规则作斗争,因为我希望只允许单个用户写入数据,同时允许任何经过身份验证的用户读取数据。 我制定了这些规则,但不确定它们是否足够安全。。。 其中“XXXXXXXXXXXXXXXXXXXX”是我希望允许写入数据的指定用户。 用户的uid是常量值吗? 在测试新规则时,单击“模拟”按钮时,“验证”选项管理什么?

  • 我的应用程序集成了聊天功能,使用Firebase实时数据库存储聊天内容。最近,我收到了一封包含以下内容的电子邮件: [Firebase]你的实时数据库****有不安全的规则 我的应用程序使用服务器端身份验证,但没有集成Firebase Auten。所以,如果我将读/写规则设置为,则正常用户不能聊天。如何解决这个问题?谢谢!

  • 到目前为止,我只能在阅读firebase文档后得出以下结论:

  • 我尝试用规则返回用户聊天列表。所以我不知道对话的id。我尝试了几种方法,但都不起作用,因为你必须知道聊天id。 数据库: 规则: 但当我从react本机应用程序访问时。通过身份验证的用户无法访问聊天记录(uid:3Oi1atf8l2P4Vgsb8tZOGxpUg7q2) *读取失败:错误:权限被拒绝/Chats:客户端没有访问所需数据的权限。 规则: 查询:

  • 我使用以下规则检查只有“管理员”才能写入陷阱部分。 这个很好用。但是如果我把规则改为, 然后我得到了一个权限错误。W/SyncTree:侦听/traps失败:数据库错误:权限被拒绝。 我之所以改变结构,是因为我试图使用validate函数,但由于我无法通过第一个问题,我无法达到验证的程度。 我肯定这是一个新手理解错误,但在尝试了许多排列后,我在这方面进展甚微。您的协助将不胜感激。 更新201606

  • 我有一个数据库: 当用户()在应用程序中注册时,他会填充另一个用户uid(该用户uid具有属性)并将自己的uid添加到他的个人资料中(