如何在不修改现有其他规则的前提下允许单个管理员写入Firebase Database
Firebase Realtime Database 全局管理员权限配置方案
你可以直接在rules根节点新增全局写入规则,利用Firebase规则「上级规则返回true则直接放行、不匹配下层规则」的特性,实现无需修改子表规则的管理员全局写入权限,逻辑完全符合你要求的「或」关系。
前提说明
默认预设管理员身份判断逻辑为「用户uid在admins节点下存在」,你可以根据自己实际的管理员标识存储逻辑替换这段判断。
配置后的完整规则示例
"rules": { // 新增根层级全局写入规则,优先级高于所有子表规则 ".write": "auth != null && root.child('admins').child(auth.uid).exists()", "scores": { "$sid": { ".read": true, ".write": "root.child('game').child($sid).child(auth.uid).exists()&& auth!=null" } }, // 其他原有表规则保持不变,不用做任何修改 ... }
规则逻辑说明
- 任意写入请求进来后,首先匹配根层级的
.write规则:如果操作人是管理员,直接返回true放行,不会再校验下层子表的规则 - 如果操作人不是管理员,才会继续向下匹配对应子表的原有规则,原来针对普通用户、玩家的权限逻辑完全不受影响
- 全程不需要修改任何原有子表的规则配置,满足需求。
内容的提问来源于stack exchange,提问作者SHAI
相关产品推荐
相关产品推荐

