我想让我的用户使用唯一的用户名和密码(而不是电子邮件+密码)进行注册。我把所有事情都放在了我的地方:
注册
如果没有,则使用FIRAuth.auth()?.createUserWithEmail
并使用电子邮件将用户名存储在数据库中,例如
登录
FIRAuth.auth()?.signIn(withEmail: withEmail
登录虽然这种方法有效,但我想知道它如何与Firebase权限一起使用?
为了获取与用户名相关联的电子邮件地址,我将不得不让所有用户访问我的电子邮件地址/用户名数据,例如
{
"rules": {
".read": true,
".write": "auth != null"
}
}
这是否意味着“黑客”可以获取已在我的应用中注册的所有用户的电子邮件地址?如果是这样,有没有办法安全地做到这一点?
答案 0 :(得分:1)
如果规则设置为true,那么如果有人可以获取数据,那么回答你的问题:是的,我可以在注册时查询每个用户的所有内容。除非您正在测试,否则不要这样做。编写数据库规则:只有Firebase数据库可以访问每个数据并为您检查唯一名称。简单的例子:
{
"allusernames": {
".read": false,
".write": "!data.exists() && newData.exists()"
}
}
当您的代码出现错误时,如果写入失败,则表示您已知道用户名。