onSubmit(formData) {
if(formData.valid) {
console.log(formData.value);
this.af.auth.createUser({
email: formData.value.email,
password: formData.value.password
}).then(
authState => {
authState.auth.sendEmailVerification();
this.router.navigate(['/login'])
}).catch(
(err) => {
console.log(err);
this.error = err;
})
}
}
在Firebase中,我设置了SendEmailVerfication
,就像上面的代码一样,电子邮件可以正常发送。但是,在我的应用中,未点击验证电子邮件的用户与点击的用户之间没有区别,如何有所作为?
答案 0 :(得分:13)
根据文档,User
对象包含emailVerified
属性。
因此,可以检查signInWithEmailAndPassword
方法的承诺解析的用户 - 或传递给onAuthStateChanged
方法的回调的用户 - 并且可以检查emailVerified
的值。
答案 1 :(得分:4)
您可以使用firebase.auth().currentUser.emailVerified
这将返回true
或false
。
答案 2 :(得分:1)
-如果您已经登录,以下解决方案可以帮助您检查电子邮件验证状态。
1):推荐的获取当前用户的方法是在Auth对象上设置观察者:
firebase.auth().onAuthStateChanged(authUser => {
if(authUser.user.emailVerified){ //This will return true or false
console.log('email is verified')
}else{
console.log('email not verified')
}
})
2)您还可以使用currentUser属性获取当前登录的用户。
var user = firebase.auth().currentUser;
if (user.emailVerified) {
// email is verified.
} else {
// email is not verified.
}
-如果您尚未登录,请尝试以下解决方案。
firebase.auth().signInWithEmailAndPassword(email, password ).then(authUser => {
if(authUser.user.emailVerified){ //This will return true or false
console.log('email is verified')
}else{
console.log('email not verified')
}
}).catch(function(error) {
});
答案 3 :(得分:0)
您可以在firebase数据库中添加用户验证状态link
的属性