我要检查用户登录时是否已验证其电子邮件地址。似乎我必须在登录后执行此操作。还有更好的方法吗?
this.authService
.login(this.email, this.password)
.then(res => {
if(!res.user.emailVerified}) {
// Log out again!
} else {
// redirect to next page
}
});
答案 0 :(得分:1)
您当前的代码意味着仅当用户显式签入时才运行检查。如果您要这样做,则此代码将实现该操作。
但是,在许多应用程序中,用户仅一次/很少地明确登录,然后无论何时重新启动,应用程序都会恢复其身份验证状态。实际上,Firebase身份验证是在幕后进行的:先保留身份验证状态,然后在应用程序重新启动时还原它。
要获取此流程,您将需要使用身份验证状态侦听器,如getting the currently signed in user上的文档中所示。
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});
如果您只是在emailVerified
属性更新后退出用户接听,我会不这样做,因为这只是让他们感到烦恼反复输入密码。相反,您还可以通过在代码中调用user.reload()
来强制刷新其个人资料。
答案 1 :(得分:1)
您希望从“ onAuthStateChanged”获取用户身份,然后检查emailVerified参数以执行逻辑。
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
if(user.emailVerified){
// proceed with your logic
}
} else {
// No user is signed in.
}
});