首页 文章

swift Firebase停止注册过程

提问于
浏览
1

如果用户名存在,我想停止注册过程 . 如果用户名存在,我不想创建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 回答

  • 1

    您的简化规则是:

    {
      "rules": {
         ".write": "(auth != null)",
         "users": {
            "$uid": {
               "username": {
                         ".write": "auth != null  && (!data.exists() || !newData.exists())",
    

    因此,您首先在数据的根目录上授予任何经过身份验证的用户写访问权限,然后说用户只能在当前位置没有数据的情况下进行写入 .

    这不起作用:一旦您在某个级别授予权限,就无法在较低级别上取消该权限 .

    Firebase文档将其描述为Read and Write rules cascade

    子规则只能为父节点已声明的内容授予其他权限 . 他们无法撤销读取或写入权限 .

相关问题