Firebase实时数据库规则:自定义UID验证与特殊权限配置
实时数据库权限规则错误分析与修正
你的规则存在以下几个关键错误:
- 大小写错误:实时数据库规则的内置对象是
newData(小驼峰写法),你写成了Newdata,导致规则无法正确识别该对象。 - 方法调用错误:
val是获取节点值的方法,必须加括号val()才能返回实际值,你写的val只是对方法的引用,并非节点的具体值。 - 逻辑判断错误:
exists()方法返回的是布尔值(true/false),你将其与字符串sdsd做比较,逻辑永远不成立,这是核心问题。 - 路径匹配错误:第一个规则里的
root.child("$folder")路径不符合需求,你需要访问的是存储自定义UID的Cust_uid文件夹,而非未定义的$folder变量。
正确的规则示例
假设你要为Sp_Admin文件夹设置写入权限,验证提交数据中的S_uid是否存在于Cust_uid目录下,规则应该写成:
{ "rules": { "Sp_Admin": { ".write": "root.child('Cust_uid').child(newData.child('S_uid').val()).exists()" } } }
规则说明
当用户尝试写入Sp_Admin文件夹时,规则会执行以下逻辑:
- 从提交的新数据中取出
S_uid字段的值; - 检查数据库根目录下的
Cust_uid文件夹中,是否存在以该值命名的节点; - 如果节点存在,允许写入操作;否则拒绝。
内容的提问来源于stack exchange,提问作者user2975634
相关产品推荐
相关产品推荐

