如何配置Firebase实时数据库规则,安全创建Alias或删除自身Alias
Firebase Realtime Database Alias 安全规则配置
需求明确
- 创建 Alias:仅允许创建数据库中未存在的条目
- 删除 Alias:仅允许删除自身
id字段与当前用户auth.uid匹配的条目
修正后的安全规则
{ "rules": { "alias": { ".read": true, "$alias": { ".write": "auth != null", ".validate": " // 创建场景:节点不存在,且提交数据的id等于当前用户uid (!root.child('alias/' + $alias).exists() && newData.child('id').val() == auth.uid) || // 删除场景:节点已存在,且该节点id等于当前用户uid,且操作为删除(新数据为空) (root.child('alias/' + $alias).exists() && root.child('alias/' + $alias).child('id').val() == auth.uid && newData.val() == null) " } } } }
规则细节说明
- 创建校验:既确保 Alias 未被占用,也限制用户只能为自己创建 Alias(提交数据的
id必须是自身uid) - 删除校验:仅允许用户删除归属自己的 Alias,且明确限定操作类型为删除(
newData.val() == null) - 自动拦截修改操作:因为修改既不满足“节点不存在”的创建条件,也不满足“新数据为空”的删除条件,所以无法修改已存在的 Alias
匹配你的数据库结构
现有数据库结构完全适配上述规则,示例结构如下:
{ "alias": { "mads": { "alias": "mads", "id": "4SCv1g84PcMoPTtwZloHol0m2j92" } } }
内容的提问来源于stack exchange,提问作者Mads
相关产品推荐
相关产品推荐

