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

如何在Firebase实时数据库中仅拒绝特定子节点user1的读取权限

数据库权限规则配置问题解决

问题描述

数据库结构

root
    |_users
        |_ user0
        |_ user1  x
        |_ user2
        |_ . . .

权限需求

仅拒绝user1的数据读取权限,以下路径的读取需正常允许:

/
/users
/users/user0
/users/user2

尝试的无效规则

试过下面的规则,但读取/users路径时权限校验不通过:

{
    "rules": {
        "$allreferences": {
            ".read":true,
        },
        "users": {
            "$allusers": {
                ".read":" $allusers !== \"user1\" "
            }
        }
    }
}

问题原因

你写的规则只限制了单个用户节点(比如/users/user1)的读取权限,但没给/users这个父节点配置正确的读取规则。Firebase读取父节点时,会优先检查该节点自身的.read规则,而你这里没设置,导致读取/users时权限不通过。

正确规则配置

{
    "rules": {
        ".read": true,
        "users": {
            ".read": true,
            "$userId": {
                ".read": "$userId !== 'user1'"
            }
        }
    }
}

规则说明

  • 根节点/.read: true:直接允许读取根路径/
  • users/.read: true:允许读取/users节点,这样获取用户列表时,除了user1会被过滤,其他都能正常返回
  • users/$userId/.read:针对单个用户节点,只拒绝user1的读取权限,其他用户节点不受影响

这样配置后,所有需求中的路径都能正常读取,只有/users/user1会被拒绝访问。

内容的提问来源于stack exchange,提问作者Shubh Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:15:35