首页 文章

Firebase权限:使用用户名和密码注册

提问于
浏览
0

我想让我的用户注册一个唯一的用户名和密码(而不是电子邮件密码) . 我把所有东西都放在了我的地方

Sign up

  • 检查提供的用户名是否已存在

  • 如果没有,则使用 FIRAuth.auth()?.createUserWithEmail 并使用电子邮件将用户名存储在数据库中,例如

  • 个用户

  • QZqFzWxpdMfc0xmyIq5IDAr1bzr2

  • 凭证

  • 电子邮件:"myemail@gmail.com"

  • 用户名:"MyUsername"

  • RJasdfasfasdad3dadaewdsdkdq3dk

  • 凭证

  • 电子邮件:"another@gmail.com"

  • 用户名:“”另一个

Sign in

  • 查询数据库以获取与用户名相关联的用户并使用该用户名获取电子邮件地址并使用 FIRAuth.auth()?.signIn(withEmail: withEmail 登录

虽然这种方法有效,但我想知道这如何与Firebase权限一起使用?

为了获得与用户名相关联的电子邮件地址,我将不得不让所有用户访问我的电子邮件地址/用户名数据,例如

{
  "rules": {
    ".read": true,
    ".write": "auth != null"
  }
}

这是否意味着“黑客”可以获取已在我的应用中注册的所有用户的电子邮件地址?如果是这样,有没有办法安全地做到这一点?

2 回答

  • -1

    如果规则设置为true,那么如果有人能够获取数据,那么回答你的问题:是的,我可以在注册时查询每个用户的所有内容 . 除非您正在测试,否则不要这样做 . 编写数据库规则:只有Firebase数据库可以访问每个数据并为您检查唯一的名称 . 简单的例子:

    {
      "allusernames": {
        ".read": false,
        ".write": "!data.exists() && newData.exists()"
      }
    }
    

    当您的代码中出现错误时,如果写入失败,您知道用户名已被删除 .

  • 1

    是 . 可以使用当前代码轻松访问它们 .

相关问题