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

kvs*_*kvs 6 firebase firebase-authentication

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

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

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

Fra*_*len 10

最新版本的Firebase身份验证支持电子邮件验证.

如果身份提供商(电子邮件+密码,谷歌)支持可选的电子邮件地址验证,则该信息将在API和安全规则中提供.(**)

例如,JavaScript API有一个emailVerified属性,您可以在代码中检查:

firebase.auth().currentUser.emailVerified
Run Code Online (Sandbox Code Playgroud)

真正

在安全规则中,您可以访问电子邮件地址以及是否已经过验证,这使得一些很好的用例成为可能.例如,使用这些规则,只有经过身份验证的经过验证的gmail用户才能编写其配置文件:

{
  "rules": {
    ".read": "auth != null",
    "gmailUsers": {
      "$uid": {
        ".write": "auth.token.email_verified == true && 
                   auth.token.email.matches(/.*@gmail.com$/)"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

(**)这适用于Google登录和电子邮件+密码.据我所知,如果经过验证,Facebook只会公开电子邮件地址,所以你可以依赖它.

  • 我没有在安全规则的任何文档中找到auth.token.你能发一个链接吗?这似乎可行. (4认同)
  • 这个解决方案似乎有效.谢谢你的帮助. (2认同)