只考虑我的Nodejs / MongoDB应用程序的注册流程,并想知道在用户注册时是否真的需要检查数据库中是否已有电子邮件地址。
我通过点击要发送给他们的电子邮件让我的用户验证他们的电子邮件地址。他们必须在登录前完成此操作。一旦他们点击此链接,我将在电子邮件中将该电子邮件标记为verified
。考虑到这一点,我认为如果某人使用相同的电子邮件地址(无论出于何种原因)进行注册并不会被标记为verified
,除非他们被标记为email
,这并不重要。可以访问电子邮件帐户。
我想知道在通过电子邮件地址搜索数据库中的用户时是否会对性能产生影响。例如,用户使用电子邮件地址登录。在这种情况下,建议在verified
和{{1}}上创建索引是否明智?
我是否忽略了可能存在安全漏洞的事情?
答案 0 :(得分:0)
在性能方面它可能并不重要(你可能已经在email
字段上有一个索引),但我认为你不应该允许它。
首先,它有可能将垃圾添加到您的数据库中。其次,它将允许现有用户创建 - 错误或不 - 具有相同电子邮件地址的第二个帐户,这可能会导致各种问题。
您没有给出允许重复电子邮件地址的具体原因,但重复检查实现起来并不是非常耗费时间(您还可以考虑{的唯一索引{1}}因此当有人试图重新注册现有地址时,数据库将抛出错误。