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

Firebase Realtime Database新增invitation时权限被拒问题求解

问题根因

你的安全规则中newData的指向范围错误:

  • 你将.write规则配置在invitations集合的根节点,此时规则中的newData指向写入操作完成后整个invitations集合的全量数据,无法直接获取到单个邀请文档下的caseId字段,路径匹配失败导致权限被拒。
  • 替换为固定caseId时路径拼接逻辑正确,因此规则可以正常生效。
修复方案

调整安全规则的作用层级,下钻到单个invitation文档级别,使用通配符$invitationId匹配单文档路径,此时newData将指向你当前写入的单个邀请文档数据,即可正确读取caseId值:

// 仅case所有者可添加invitations
"invitations":{
  "$invitationId": {
    // 新增caseId存在校验,避免无caseId时规则求值错误直接返回拒绝
    ".write" :"newData.child('caseId').exists() && root.child('cases').child(newData.child('caseId').val()).child('owner').child(auth.uid).exists()",
  }
},

可选优化

如果需要限制仅能新增邀请、不能修改/删除已存在的邀请,可以在规则中新增!data.exists()判断:

".write" :"!data.exists() && newData.child('caseId').exists() && root.child('cases').child(newData.child('caseId').val()).child('owner').child(auth.uid).exists()"

内容的提问来源于stack exchange,提问作者Mahmoud Niypoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:09:05