Firebase数据库动态节点下仅允许写入likes、shares字段的规则如何编写
Firebase 动态节点安全规则配置方案
你可以使用Firebase Realtime Database安全规则内置的通配符语法($+自定义变量名)来匹配任意动态节点,替换硬编码的固定节点名,最终配置的规则如下:
{ "rules": { "Cards": { // 全路径可读权限直接配置在顶层,自动继承到所有子节点 ".read": true, // 顶层默认禁止所有写入操作,仅后续单独放开的子节点可写 ".write": false, // $group 通配符匹配任意分组节点,替代硬编码的Group1、Group2等 "$group": { // $cardId 通配符匹配任意卡片ID节点,替代硬编码的0、1、2等数字节点 "$cardId": { "likes": { ".write": true // 可选优化:限制写入值必须为数字,防止非法数据:.write: "newData.isNumber()" }, "shares": { ".write": true } } } } } }
规则说明
- 通配符
$变量名可以匹配当前层级下所有未显式声明的节点名,变量名可自定义,后续规则中还可以直接调用该变量获取当前匹配的节点值做权限校验。 - 规则遵循「父节点禁止的权限,子节点可以单独放开;父节点允许的权限,子节点无法撤销」的逻辑,所以在
Cards节点配置全局禁止写入后,只有单独放开的likes和shares节点支持写入,其他所有字段天然禁止修改,完全匹配需求。
内容的提问来源于stack exchange,提问作者sheko
相关产品推荐
相关产品推荐

