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

如何查询Firebase Realtime Database多用户可访问条目并配置安全规则

安全规则配置方案

你可以直接使用如下Firebase Realtime Database安全规则,同时满足合法查询放行、未授权访问拦截的需求:

{
  "rules": {
    "items": {
      // 为users下的动态uid字段建立查询索引
      ".indexOn": "users/*",
      ".read": "auth != null && 
        query.orderByChild === 'users/' + auth.uid && 
        query.equalTo === true",
      "$itemId": {
        // 单独访问单个item时的权限校验
        ".read": "auth != null && data.child('users').child(auth.uid).val() === true",
        // 可根据自身业务需求修改写入规则,默认禁止所有写入
        ".write": false
      }
    }
  }
}

规则说明

  • 索引配置:.indexOn: "users/*" 为items节点下所有子项的users字段的动态子键建立索引,保证你的orderByChild(users/${currentUserUid})查询可以正常执行,不会抛出索引缺失错误,同时优化查询性能。
  • 列表查询权限校验:items节点的.read规则限定了只有同时满足三个条件的请求才允许执行:
    1. 请求用户已登录(auth不为空)
    2. 查询的排序字段为users/当前登录用户自己的uid,无法查询其他用户的权限字段
    3. 查询条件为等于true,匹配你当前的查询逻辑
      所有不符合上述条件的列表查询(比如全量拉取items、查询其他用户的权限等)都会直接被拒绝。
  • 单item访问权限校验:$itemId节点的.read规则限定了用户直接访问单个item路径时,只有自己在该item的授权用户列表里才能拿到数据,避免用户通过拼接路径越权访问无权限的item。

内容的提问来源于stack exchange,提问作者Simon Tran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:48:04