我可以在用户注册后发送验证电子邮件,但用户会自动登录。如何防止用户在验证电子邮件之前登录?
async registerUser(customer: Customer, password: string) {
try {
const newUserCredential = await this.firebaseAuth.createUser(
customer.email,
password
);
// store user details in firestore
this.firebaseStore.storeUserDetails(newUserCredential, customer);
await newUserCredential.user.sendEmailVerification();
return newUserCredential;
} catch (error) {
console.error(error);
throw new Error(error.message);
}
}
您无法阻止用户登录您的应用程序。但是,您可以检查他们的电子邮件是否经过验证,以授权访问您的任何项目资源。
emailVerified
属性,其中 true
表示电子邮件已验证。只需检查电子邮件是否已验证,如果没有,则强制注销(发送验证电子邮件后也将其注销)。但这只是客户端验证,因此您必须确保服务器上有适当的安全规则或验证。
如果您对实时数据库使用安全规则,您也可以在那里验证电子邮件是否已验证。
".read": "auth != null && auth.token.email_verified"
Firestore 的安全规则也是如此:
allow read: if request.auth.token.email_verified;
迟来的简短跟进: 2024 年,您可以使用 Google Cloud Identity Platform 并添加
beforeUserSignedIn
阻止功能。在活动数据中,您可以访问 emailVerified
。
现在可以在阻止流程中阻止未验证的帐户。