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

仅允许预验证的用户登录Firebase

夏博
2023-03-14

现在,我只想让那些已经注册并用我们的软件验证过的用户登录,我已经将用户的电子邮件列表(去掉特殊字符)保存在Firebase内部。当前,当用户登录时,我使用以下功能检查他们的邮件是否在此列表中:

function isEmailValid(userEmail, trueCallback, falseCallback) {
  var emailHash = userEmail.replace(/[^a-zA-Z0-9]/g, "");
  firebase
    .database()
    .ref("validEmails/" + emailHash)
    .on("value", snapshot => {
      if (snapshot.val()) {
        trueCallback(snapshot.val());
      } else {
        falseCallback();
      }
    });
}

虽然这种方法起作用,但它相当笨拙,因为用户仍然能够在函数回调被调用之前进行初始登录,并且他们的电子邮件仍然显示在FireBase中的“Authentication”选项卡中。

有没有更好的方法只允许预先验证的用户登录到Firebase?

共有1个答案

徐俊人
2023-03-14

我非常肯定这一点之前已经讨论过:目前没有任何方法可以阻止用户使用Firebase身份验证登录。但是如果您想要阻止他们访问后端资源,您可以检查他们的电子邮件地址是否在服务器端安全规则(对于实时数据库、存储或Firestore)中验证过,或者在您自己的服务器端代码中验证过。

在I/O上,我们演示了云功能中即将出现的功能,它将允许您防止用户在没有经过验证的电子邮件地址的情况下登录。但我不知道这个功能什么时候可以在公共API中使用。

另请参阅:

  • Firebase防止在电子邮件验证之前创建帐户
  • 如何在验证电子邮件之前防止在Firebase/vue.js中进行用户身份验证
  • 如何将Firebase数据库锁定到特定(电子邮件)域的任何用户?
 类似资料:
  • 我正在Firebase后端的帮助下开发应用程序,并且我正在使用Firebase Auth登录我的应用程序。我已经完成了所有集成和所有事情,我的应用程序运行良好。 但我只希望与单个用户的单个会话,因为现在用单个用户Id,我可以通过多个设备登录。 因此,我想限制用户一次只能在一台设备上登录。 我正在使用自定义身份验证和用户名密码登录: 如果用户在另一台设备中使用相同的ID登录,我想显示“您已经登录到另

  • 我正在使用FireBase实时数据库来设置一个简单的CRUD应用程序。 我正在设置规则,以便只有登录的用户才能写入请求部分。我一定是误会了奥特。uid。 在请求中,我设置了,但我无法写入数据。 我错过了什么?

  • 我目前有一个WP站点设置,安装了一个独特的“multisite”插件,专门用于WooCommerce产品的一个管理区域,但有两个不同的前端,基于两个不同的域,具有不同的主题。 其中一个站点是“批发”站点,而另一个是“零售”站点。批发网站只允许交易客户进行购买。问题在于这两个站点共享一个域,因此用户帐户。 问题:我需要确保,如果没有用户角色“trade_customer”的用户尝试登录批发网站,则会

  • 问题内容: 在MySQL中,我有一个用户芒果。当我创建它时,用户可以完美地工作。但是,重新启动计算机后,尝试登录芒果会产生以下输出: 这让我想起了密码哈希,因此在调查mysql.user之后,我发现mangos没有密码!我更新了密码: 现在,我得到: 与mangos的mysql.user密码栏中显示的数字相同,并且与原始数字不同。我仍然无法登录。 如何使MySQL正确识别密码? 这就是这里的问题吗

  • 本文向大家介绍Java用户登录验证代码,包括了Java用户登录验证代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,关键代码如下所示: 以上所述是小编给大家介绍的Java用户登录验证代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件: