现在,我只希望已经注册并已通过我们的软件验证的用户登录,并且我已经将用户的电子邮件列表(带有特殊字符的邮件)保存在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?
答案 0 :(得分:1)
我很确定以前已经解决了这个问题:当前无法阻止用户使用Firebase身份验证登录。但是,如果要阻止它们访问后端资源,则可以检查是否已在服务器端安全规则(针对实时数据库,存储或Firestore)或您自己的服务器端代码中验证了它们的电子邮件地址。 / p>
在I / O上,演示了Cloud Function中即将推出的功能,该功能使您可以prevent signing in users without a verified email address。但是我不知道何时可以在公共API中使用此功能。
另请参阅: