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

Firebase项目权限配置:如何仅允许用户增删实时数据库数据?

为指定用户设置Firebase实时数据库仅添加/删除权限的方案

没问题,我来帮你搞定这个权限设置!要给指定用户只开放实时数据库的添加(创建)和删除操作权限,核心是通过Firebase的安全规则进行精准控制,具体步骤如下:

1. 获取目标用户的UID

首先你需要拿到这个用户在Firebase Auth系统中的唯一标识UID:

  • 打开Firebase控制台,进入「Authentication」→「用户」页面
  • 找到目标用户,复制他的UID(看起来像是一串随机字符串),后续规则要用到这个值

2. 编写自定义安全规则

进入Firebase控制台的「实时数据库」→「规则」页面,替换默认规则为以下自定义规则:

{
  "rules": {
    // 拒绝所有读取请求(如果需要开放读取权限,可以改成对应的条件)
    ".read": false,
    // 仅允许指定用户执行添加或删除操作
    ".write": "auth != null && auth.uid == '这里替换成目标用户的UID' && (newData.exists() && !data.exists() || !newData.exists() && data.exists())"
  }
}

规则逻辑解释:

  • auth != null:确保操作发起者是已登录的合法用户
  • auth.uid == '目标用户UID':精准限定只有这个特定用户能执行写入操作
  • 最后的逻辑判断:
    • newData.exists() && !data.exists():匹配添加新数据的操作(之前没有数据,现在新增了)
    • !newData.exists() && data.exists():匹配删除现有数据的操作(之前有数据,现在被清空了)
    • 两个条件满足其一就允许写入,直接拒绝了修改现有数据(data和newData都存在)的操作

3. 针对特定节点设置权限(可选)

如果你不想给用户整个数据库的权限,只想开放某个特定节点(比如posts或comments),可以把规则嵌套到对应节点下,其他节点保持拒绝访问:

{
  "rules": {
    "your-target-node": {
      ".read": false,
      ".write": "auth != null && auth.uid == '目标用户UID' && (newData.exists() && !data.exists() || !newData.exists() && data.exists())"
    },
    // 其他所有节点拒绝任何操作
    ".read": false,
    ".write": false
  }
}

4. 验证规则有效性

写完规则后,一定要用控制台的「规则模拟器」测试:

  • 模拟添加、删除、修改、读取操作
  • 验证只有指定用户能执行添加/删除,其他操作都会被拒绝,确保符合你的需求

内容的提问来源于stack exchange,提问作者Дмитрий Деникаев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:56:27