我可以發送驗證電子郵件,但用戶仍然可以登錄。如何防止用戶在驗證其電子郵件之前登錄。
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);
}
}
您不能阻止用戶登錄到您的應用程序。但是,您可以檢查他們的電子郵件是否經過驗證,以授權訪問您的任何項目資源。
在您的web應用程序中,您可以檢查
emailVerified
屬性,即true
是否驗證了電子郵件。只需檢查電子郵件是否已驗證,如果未驗證,則強制注銷(在發送驗證電子郵件后也將其注銷)。但這只是客戶端驗證,所以必須確保在服務器上有正確的安全規則或驗證。如果您使用的是實時數據庫的安全規則,您可以驗證電子郵件是否也在那里得到驗證。
Firestore的安全規則也是如此: