首页 文章

使用用户名作为firebase中的密钥来存储用户

提问于
浏览
1

我想要一个用户名/密码登录系统而不是电子邮件/密码 . 我目前正在做的是获取用户名并在最后添加“@ domain.com”并在firebase上注册用户作为电子邮件/密码帐户 .

在我的firebase数据库中,我将用户信息存储在'userProfiles / $ uid'下 . 但是,只给出用户的用户名,我需要先访问另一个节点来查找uid,然后使用它来访问用户数据 .

我的问题是:在每个用户名下存储用户数据是否有任何缺点?在我的安全规则中,我可以这样做:

$username + '@domain.com' === auth.token.email

大多数时候,我可以直接访问用户的uid . 但是,有一种情况我想重置用户的密码(我必须自己实现它,因为我在firebase中使用用户名作为电子邮件)而且我只能访问用户名 .

1 回答

  • 1

    Update

    正如评论中所指出的那样,因为用户正在使用_991553注册 - Firebase将阻止重复的用户名,因为它赢得了任何冲突 . 请记住,这个问题会变得更加困难 if users are allowed to change their username . 您忘了Firebase区分大小写,因此您可能希望将所有用户名强制转换为大写/小写,并在上传之前修剪尾随空白区域 .

    我能想到的最大问题是,firebase保证uid是唯一的,因此不会有任何重复 . 如果您通过用户名存储所有内容,则必须确保用户注册时没有重复的用户名 . 因此,您必须创建可由未经身份验证的用户读取的数据库区域,以根据现有用户名检查请求的用户名 .

    你必须考虑如何才能更容易地存储 username -> uid ,以便你有一个映射来获取用户数据(如果你只有用户名) . 这不会产生很大的性能差异 .

相关问题