我们如何保证Firebase用户保存的电子邮件确实是他自己的电子邮件?

时间:2016-06-23 08:28:03

标签: firebase firebase-authentication

换句话说,有没有办法验证用户(当他设置让用户//电子邮件时),它确实是登录用户的电子邮件ID?

我们正在构建一个firebase应用程序,其中服务的某些方面是通过电子邮件通知提供的。我们不希望向错误的用户发送电子邮件。似乎没有办法保证写给用户的电子邮件信息//电子邮件路径确实与用于登录的电子邮件(直接或通过谷歌或Facebook等)相同。

在我看来,如果auth(规则)除auth.uid之外还有auth.email字段,它将解决问题,并且可以编写规则来处理用例。

1 个答案:

答案 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只会公开电子邮件地址,所以你可以依赖它。