You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Firebase规则 仅允许列表内用户读写数据库其他指定节点

Firebase数据库跨节点访问权限配置方案

你可以通过Firebase实时数据库规则内置的exists()方法校验用户是否在白名单节点内,以下是适配你的数据库结构的完整规则:

{
  "rules": {
    "SomeDB": {
      "SomethingForWR": {
        // 仅允许已登录且在ListOfUsers中登记的用户读取
        ".read": "auth != null && exists(root.child('SomeDB/ListOfUsers').child(auth.uid))",
        // 仅允许已登录且在ListOfUsers中登记的用户写入
        ".write": "auth != null && exists(root.child('SomeDB/ListOfUsers').child(auth.uid))"
      }
      // ListOfUsers节点的权限可根据业务需求单独配置,不受上述规则影响
    }
  }
}

规则逻辑说明

  • 首先通过auth != null校验用户是否处于已登录状态,避免未登录访问产生不必要的异常
  • root.child('SomeDB/ListOfUsers').child(auth.uid)会从数据库根节点定位到ListOfUsers下,和当前登录用户uid同名的子节点
  • exists()方法会判断上述定位的节点是否真实存在,只要存在就说明用户属于允许访问的白名单,即可放行读写请求

注意事项

  • 如果你后续调整了ListOfUsers的结构,将用户uid存储在子字段而非子键中,可以将校验逻辑修改为exists(root.child('SomeDB/ListOfUsers').orderByChild('key').equalTo(auth.uid))即可适配,不过当前结构直接用子键判断的查询效率更高
  • 该规则只会限制SomethingForWR节点的访问权限,不会影响其他节点的权限配置

内容的提问来源于stack exchange,提问作者daniel ng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:01