如果用户名存在,我想停止注册过程 . 如果用户名存在,我不想创建Email \ Password(身份验证)和其他信息
数据库规则:
{
"rules": {
"users": {
".read": "(auth != null)",
".indexOn": ["username"],
"$uid": {
"$username":{
".write": "(auth != null) && !data.exists() || newData.exists()"
}
}
}
}
}
我在.write中添加了 !data.exists()
,但它仍然重复了用户名 . 然后我添加 ".validate"
使用户名至少为3个字符,看看注册过程是否会失败,如果它更长,但它创建了email \ password和其他东西,但没有在数据库root \ users \中写入任何数据
在使用email \ password注册新用户后,我收到此错误,这意味着用户名不能超过3个字符 . How to stop the signup process and show alert message at this situation?
[Firebase /数据库] [I-RDB03812] setValue:或removeValue:at / users / jt94ARqOoodtU3kYp3W1MtlUZ4m1 failed:permission_denied
如果你能解决问题,请帮助我 .
1 回答
您的简化规则是:
因此,您首先在数据的根目录上授予任何经过身份验证的用户写访问权限,然后说用户只能在当前位置没有数据的情况下进行写入 .
这不起作用:一旦您在某个级别授予权限,就无法在较低级别上取消该权限 .
Firebase文档将其描述为Read and Write rules cascade: