2016-05-16 44 views
0

想想我的Nodejs/MongoDB應用程序的註冊流程,並想知道當用戶註冊時是否真的需要檢查電子郵件地址是否已經在數據庫中。我應該存儲重複的電子郵件地址嗎?

我讓我的用戶通過點擊我將發送給他們的電子郵件來驗證他們的電子郵件地址。他們必須在登錄之前完成此操作。一旦他們點擊這個鏈接,我會在數據庫中將該電子郵件標記爲verified。考慮到這一點,我認爲,如果有人註冊了相同的電子郵件地址(無論出於何種原因)並不重要,因爲它不會被標記爲verified,除非他們可以訪問電子郵件帳戶。

但是,我想知道它是否會影響性能,當涉及到通過電子郵件地址搜索數據庫中的用戶時。例如,用戶使用電子郵件地址登錄。在這種情況下建議在emailverified上建立索引是否明智?

我忽略了一些可能成爲安全缺陷的東西嗎?

回答

0

從表現來看,它可能無關緊要(您可能已在email字段中有索引),但我認爲您不應該允許它。

首先,它有可能將垃圾添加到您的數據庫。其次,它將允許現有用戶創建 - 不管是錯誤的還是不是 - 具有相同電子郵件地址的第二個帳戶,這可能導致各種問題。

你不給出具體的理由爲希望允許重複的電子郵件地址,但重複檢查是不是真的那麼費時實現(你也可以考慮email所以數據庫的唯一索引當有人試圖重新註冊現有地址時會拋出錯誤)。

+0

一些有趣的點,謝謝 - 用戶將無法創建第二個帳戶,因爲如果該電子郵件地址被驗證,那麼電子郵件將無法註冊。關於「垃圾」問題,我認爲這總是會成爲一個問題。我也可以清除在特定時間內未被驗證的帳戶。我的做法的一個原因是,它阻止人/機器註冊不是他們自己的電子郵件並阻止其他用戶。 – tommyd456

+0

@ tommyd456如果這是您的擔憂,您可以允許嘗試註冊「待處理」地址的人(已註冊但尚未驗證的地址)要求再次發送確認電子郵件。 – robertklep

+0

是的,這就是我的問題中「已覈實」的含義。所以你不認爲會有大量用戶的性能問題? – tommyd456