如何检查电子邮件是否在Firebase中使用参数进行验证?



我的计划是只有在电子邮件已被验证的情况下才登录用户。我正在使用if语句来检查电子邮件是否使用内置的"emailverified"进行了验证。函数,但是正在崩溃。

function login(email, password) {
if (email.emailVerified) {
console.log("trying to log user");
return auth.signInWithEmailAndPassword(email, password);
} else {
console.log("failed to log user");
alert("Please verify your email");
return false;
}
}

在不登录的情况下无法确定配置文件的emailVerified属性是否在客户端SDK中设置。因此,只有客户端SDK,您将无法完成伪代码的功能。

可以做的是在一个可信的环境中创建一个自定义API(例如在Cloud Functions上),在那里你使用Admin SDK通过它的电子邮件地址获取用户配置文件,然后检查它的emailVerified属性是否设置为true。然后,您可以在应用程序代码中调用这个自定义API。但是这仍然不能阻止恶意用户自己调用signInWithEmailAndPassword方法

或者,更简单的是,先登录,然后检查电子邮件是否经过验证,只有在电子邮件经过验证时才允许用户继续使用应用程序(和访问数据)。

请注意,这个话题经常出现,所以我也建议阅读:

  • 只允许预先验证的用户登录Firebase
  • Firebase - Auth -发现注册但未验证电子邮件的用户
  • Firebase Auth - createUserWithEmailAndPassword() -防止登录,直到电子邮件被验证
  • 我可以在不注销的情况下获得更新的emailVerified吗?
  • 和更多来自这些搜索结果

最新更新