Javascript 检查注册时firestore auth中是否已存在电子邮件(Angular)
当用户注册我们的应用程序时,我想让他们知道他们试图注册的电子邮件是否已经存在,而无需提交表单(即电子邮件字段模糊)。目前,用户必须输入他们的详细信息并单击“注册”,然后才能让他们知道电子邮件是否已收到 通过输入电子邮件的spotify注册,您可以观察到所需的行为,并且只要单击“离开”,您就会看到以下内容: 到目前为止,我已经编写了一个在blur上触发的云函数(http),该函数从firestore admin auth调用Javascript 检查注册时firestore auth中是否已存在电子邮件(Angular),javascript,node.js,angular,firebase,google-cloud-firestore,Javascript,Node.js,Angular,Firebase,Google Cloud Firestore,当用户注册我们的应用程序时,我想让他们知道他们试图注册的电子邮件是否已经存在,而无需提交表单(即电子邮件字段模糊)。目前,用户必须输入他们的详细信息并单击“注册”,然后才能让他们知道电子邮件是否已收到 通过输入电子邮件的spotify注册,您可以观察到所需的行为,并且只要单击“离开”,您就会看到以下内容: 到目前为止,我已经编写了一个在blur上触发的云函数(http),该函数从firestore admin auth调用getUserByEmail函数。功能如下: export const
getUserByEmail
函数。功能如下:
export const checkUserEmail = https.onRequest((req, res) => {
corsHandler(req, res, async () => {
try {
const email = req.body.email;
await admin.auth().getUserByEmail(email);
res.send({status: 200});
return;
} catch(e) {
return Helpers._handleError(res, 400, e.message);
}
})
});
这确实有效,因为我现在可以检查电子邮件是否存在,但问题是验证需要3-10秒(足够长的时间让用户深入注册过程)
有没有办法:
提前感谢您可以使用
用户
集合,您可能已经在使用了。这可以存储用户信息,并且经常被证明是真正可以处理的,因为auth用户不能用字段更新,它不知道如何开箱即用
您可以在此处存储用户的电子邮件,并与此处的
用户
集合的电子邮件字段相比,检查该集合中的用户输入。您可以使用用户
集合,您可能已经在这样做了。这可以存储用户信息,并且经常被证明是真正可以处理的,因为auth用户不能用字段更新,它不知道如何开箱即用
您可以在此处存储用户的电子邮件,并与
用户
集合的电子邮件字段相比,检查集合中的用户输入。是的,因此我们有一个用户集合,就像您所说的,它将电子邮件存储在其他信息中-问题是我想检查firestore身份验证选项卡中是否存在该用户对于额外的安全性,我认为如果您现在在onRequest云函数中这样做,并且只返回true
或false
,那么在安全性方面没有什么不同。无论哪种方式,您都可以知道您的数据库是否包含与电子邮件相关的帐户。是的,我们确实有一个用户集合,就像您所说的,它将电子邮件存储在其他信息中-问题是,我想检查用户是否存在于firestore身份验证选项卡中,以获得额外的安全性。我想,如果您现在在onRequest云函数,只返回true
或false
,在安全性方面没有太大区别。无论哪种方式,您都可以知道数据库是否包含与电子邮件相关的帐户。异步验证器应该非常快速,您不需要云功能。但是,让用户知道电子邮件已被接收可能会被视为安全风险。你让攻击者知道电子邮件是有效的,不像发送一个通用错误消息。也许你可以考虑这个问题:@ Ajt88-这是一个奇妙的解决方案!谢谢,异步验证器应该非常快,您不需要云函数。但是,让用户知道电子邮件已被接收可能会被视为安全风险。你让攻击者知道电子邮件是有效的,不像发送一个通用错误消息。也许你可以考虑这个问题:@ Ajt88-这是一个奇妙的解决方案!非常感谢。