当前位置: 首页 > 知识库问答 >
问题:

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

韩瀚
2023-03-14

我可以在用户注册后发送一封验证邮件,但是用户会自动登录。在用户验证其电子邮件之前,我如何阻止他们登录?

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);
        }
    }

共有1个答案

郦良才
2023-03-14

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

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

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

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

同样的情况也适用于Firey的安全规则:

allow read: if request.auth.token.email_verified;
 类似资料:
  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 我也不会得到一个错误,如果我登录我的电子邮件和密码没有验证电子邮件。 非常感谢你事先的帮助。

  • 电子邮件验证+电子邮件/密码验证的使用不适用于在用户开始使用服务之前绝对需要电子邮件验证的服务。 让我用Google sign in First的一个例子来解释。 首先,用户登录他们的Google帐户(比如电子邮件是),并授权您的应用程序。然后使用通过它接收到的令牌创建一个凭据,并与Firebase交换这些令牌以将用户登录到Firebase。用户需要存在于Firebase中,您才能使用Fireba

  • 注册Firebase身份验证“电子邮件/密码”后,无需验证即可保存电子邮件。我有一份关于Flitter firebase的申请。当有人注册时,我会将他们引导到电子邮件验证页面,并将他们保留在那里,直到他们验证电子邮件。问题是,如果有人使用我的电子邮件并在未经验证的情况下删除应用程序,邮件仍会保留在数据库中。我们如何删除未经验证的电子邮件地址?

  • 在本章中,我们将向您展示如何使用Firebase电子邮件/密码身份验证。 创建用户 要对用户进行身份验证,我们可以使用createUserWithEmailAndPassword(email, password)方法。 例子 (Example) 让我们考虑以下示例。 var email = "myemail@email.com"; var password = "mypassword"; fire

  • 情况 我想为我的web应用程序使用Azure B2C身份验证服务。但是,我希望应用程序管理员限制对某些电子邮件或域的访问,例如白名单,如下所示: tom1@abc.com tom2@def.com *@alphabet.com 因此,只有前两封电子邮件和任何以“alphabet.com”结尾的电子邮件才能访问该网站。 问题 我已经实现了所有功能,并且工作正常,但是我正在努力获取经过身份验证的用户的