只允许预先验证的用户登录Firebase

时间:2019-08-04 00:44:48

标签: javascript firebase firebase-authentication

现在,我只希望已经注册并已通过我们的软件验证的用户登录,并且我已经将用户的电子邮件列表(带有特殊字符的邮件)保存在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的“身份验证”选项卡中。

是否有更好的方法只允许经过预验证的用户登录Firebase?

1 个答案:

答案 0 :(得分:1)

我很确定以前已经解决了这个问题:当前无法阻止用户使用Firebase身份验证登录。但是,如果要阻止它们访问后端资源,则可以检查是否已在服务器端安全规则(针对实时数据库,存储或Firestore)或您自己的服务器端代码中验证了它们的电子邮件地址。 / p>

在I / O上,演示了Cloud Function中即将推出的功能,该功能使您可以prevent signing in users without a verified email address。但是我不知道何时可以在公共API中使用此功能。

另请参阅: