Firebase实时数据库安全规则配置:限制Entry节点写入权限
Firebase Realtime Database 安全规则配置:限制Entry节点写入权限
核心需求
仅允许写入Entry节点的用户对象,其name字段值必须存在于AllowedEntry节点的子节点中(比如AllowedEntry/ABC存在时,Entry下才能写入name为ABC的用户对象)。
有效安全规则代码
{ "rules": { "Entry": { "$entryKey": { ".write": "root.child('AllowedEntry').hasChild(newData.child('name').val())" } } } }
规则说明
$entryKey通配符:匹配Entry节点下所有动态生成的子节点键(对应你提到的{"ABC": {...}}这类动态键结构)- 权限校验逻辑:
- 通过
newData.child('name').val()提取待写入用户对象的name字段值 - 检查
AllowedEntry节点下是否存在以此name值为键的子节点(匹配你提供的数据结构:AllowedEntry/ABC、AllowedEntry/LMN等)
- 通过
- 解决你之前的问题:无需纠结动态键路径,
$entryKey会自动匹配所有子节点,newData直接指向当前待写入的子节点数据,无需手动指定路径
额外补充
如果你的AllowedEntry子节点键与name字段值不一致(比如子节点键是随机ID,name字段存ABC),可以调整校验逻辑为:
".write": "root.child('AllowedEntry').orderByChild('name').equalTo(newData.child('name').val()).exists()"
内容的提问来源于stack exchange,提问作者user3833732
相关产品推荐
相关产品推荐

