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

Firebase中如何仅允许创建者增删改节点,其他用户不可操作?

Firebase实时数据库安全规则实现用户数据隔离

针对你提出的「用户仅能访问编辑自己创建的数据节点、允许空节点创建clips/clipOwners、禁止占用已存在pushKey」需求,我整理了一套针对性的安全规则,下面给你详细拆解:

核心思路

利用Firebase Auth的auth.uid作为用户唯一标识,通过clipOwners节点记录每个clips下pushKey的所有者,以此验证用户的操作权限,实现数据的完全隔离。

完整安全规则代码

{
  "rules": {
    ".read": false,
    ".write": false,
    "clips": {
      "$pushKey": {
        // 读取权限:仅所有者能读取自己的clip节点
        ".read": "root.child('clipOwners').child($pushKey).val() === auth.uid",
        // 写入权限:分创建、更新、删除三种场景
        ".write": "
          // 场景1:创建新clip节点,需满足clipOwners对应节点不存在,且同时写入clipOwners记录自己为所有者
          (!data.exists() && !root.child('clipOwners').child($pushKey).exists() && newData.parent().parent().child('clipOwners').child($pushKey).val() === auth.uid) ||
          // 场景2:更新/删除已有clip节点,需是该节点的所有者
          (data.exists() && root.child('clipOwners').child($pushKey).val() === auth.uid)
        "
      }
    },
    "clipOwners": {
      "$pushKey": {
        // 读取权限:仅所有者能查看自己的所有权记录
        ".read": "root.child('clipOwners').child($pushKey).val() === auth.uid",
        // 写入权限:分创建、更新、删除三种场景
        ".write": "
          // 场景1:创建所有权记录,需对应clips节点不存在(确保pushKey未被占用),且记录的uid是当前用户
          (!data.exists() && !root.child('clips').child($pushKey).exists() && newData.val() === auth.uid) ||
          // 场景2:更新/删除所有权记录,需是该记录的所有者
          (data.exists() && data.val() === auth.uid)
        "
      }
    }
  }
}

规则细节解释

  • 全局默认规则:根节点默认拒绝所有读写,确保未配置的节点不会被意外访问
  • clips节点权限:
    • 读取:只有clipOwners中记录的所有者用户,才能读取对应的clip节点
    • 创建:必须满足两个条件——当前clip节点不存在、对应的clipOwners节点也不存在,同时创建时要在clipOwners中写入自己的uid作为所有者,避免pushKey被抢占
    • 更新/删除:只有该clip的所有者才能执行操作
  • clipOwners节点权限:
    • 读取:只有所有者能查看自己的所有权记录
    • 创建:必须对应clips节点不存在(保证pushKey未被占用),且只能记录当前用户的uid
    • 更新/删除:只有记录的所有者才能修改或删除这条所有权记录

这套规则完美实现了你要的所有需求:用户只能操作自己的节点、空节点允许创建、已占用的pushKey无法被其他用户抢占。

内容的提问来源于stack exchange,提问作者Joao Alves Marrucho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:00:10