换句话说,有没有办法验证用户(当他设置让用户//电子邮件时),它确实是登录用户的电子邮件ID?
我们正在构建一个firebase应用程序,其中服务的某些方面是通过电子邮件通知提供的。我们不希望向错误的用户发送电子邮件。似乎没有办法保证写给用户的电子邮件信息//电子邮件路径确实与用于登录的电子邮件(直接或通过谷歌或Facebook等)相同。
在我看来,如果auth(规则)除auth.uid之外还有auth.email字段,它将解决问题,并且可以编写规则来处理用例。
答案 0 :(得分:10)
最新版本的Firebase身份验证支持电子邮件验证。
如果身份提供商(电子邮件+密码,谷歌)支持可选的电子邮件地址验证,则该信息可在API和安全规则中使用。(**)
例如,您可以在代码中检查的JavaScript API has an emailVerified
property:
firebase.auth().currentUser.emailVerified
真
在安全规则中,您可以访问电子邮件地址以及是否已经过验证,从而可以实现一些很好的用例。例如,使用这些规则,只有经过身份验证的经过验证的gmail用户才能编写其个人资料:
{
"rules": {
".read": "auth != null",
"gmailUsers": {
"$uid": {
".write": "auth.token.email_verified == true &&
auth.token.email.matches(/.*@gmail.com$/)"
}
}
}
}
(**)这适用于Google登录和电子邮件+密码。据我所知,如果经过验证,Facebook只会公开电子邮件地址,所以你可以依赖它。