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

如何配置安全规则:允许指定字段修改与新增字段,保护src不可变

解决方案:调整安全规则以允许新增字段并保护src字段不可变

现有规则的问题在于hasOnly(['gender','unit'])会严格限制所有被修改/新增的字段只能是这两个,导致无法添加extras这类新字段。要实现需求,需要拆分规则为两个核心逻辑:

规则调整思路

  1. 禁止修改src字段:确保更新操作中src的值与原数据完全一致;创建操作时默认允许设置src(若需禁止创建时设置可调整逻辑)。
  2. 允许合法字段修改与新增:允许修改gender、unit,同时允许添加原数据中不存在的新字段(如extras)。

修改后的规则代码

// 组合规则:src不可变 + 允许指定字段修改/新增字段
&& (!resource.data.exists() || request.resource.data.get('src') === resource.data.get('src'))
&& request.resource.data.diff(resource.data).affectedKeys().every(key => 
  ['gender', 'unit'].includes(key) || !resource.data.has(key)
)

代码解释

  • src字段保护逻辑:!resource.data.exists() 判断是否为创建操作(此时原数据不存在,允许设置src);如果是更新操作,则强制要求新数据的src与原数据完全一致,杜绝修改。
  • 合法字段校验逻辑:遍历所有被改动的字段(包括新增字段),只要字段是gender/unit,或是原数据中没有的新字段,就符合规则。这样既保留了对指定基础字段的修改权限,又放开了新增字段的限制。

可选调整:创建时也禁止设置src

如果需要连创建时都不允许设置src字段,可将第一部分规则修改为:

&& !request.resource.data.has('src')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:17