防止未经验证的电子邮件使用 firebase 身份验证登录

问题描述 投票:0回答:2

我可以在用户注册后发送验证电子邮件,但用户会自动登录。如何防止用户在验证电子邮件之前登录?

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);
        }
    }
firebase firebase-authentication
2个回答
4
投票

您无法阻止用户登录您的应用程序。但是,您可以检查他们的电子邮件是否经过验证,以授权访问您的任何项目资源。

在您的网络应用程序中,您可以检查

emailVerified
属性,其中
true
表示电子邮件已验证。只需检查电子邮件是否已验证,如果没有,则强制注销(发送验证电子邮件后也将其注销)。但这只是客户端验证,因此您必须确保服务器上有适当的安全规则或验证。

如果您对实时数据库使用安全规则,您也可以在那里验证电子邮件是否已验证。

".read": "auth != null && auth.token.email_verified"

Firestore 的安全规则也是如此:

allow read: if request.auth.token.email_verified;

0
投票

迟来的简短跟进: 2024 年,您可以使用 Google Cloud Identity Platform 并添加

beforeUserSignedIn
阻止功能。在活动数据中,您可以访问
emailVerified

现在可以在阻止流程中阻止未验证的帐户。

© www.soinside.com 2019 - 2024. All rights reserved.