2012-01-12 57 views
11

我有單一電子郵件字段的註冊表單。當用戶輸入電子郵件時,我需要發送註冊鏈接。Node.js - 在註冊時發送電子郵件

我見過this Node.js示例與註冊表單。但它只發送歡迎功能。

有發送註冊郵件的Node.js應用程序的例子嗎?

回答

22

我到目前爲止還沒有見過這樣的例子,但是你的第二個問題是什麼?你提供的例子顯示瞭如何發送電子郵件。另一種選擇是使用這個包:

https://github.com/Marak/node_mailer

這似乎也有據可查如何發送電子郵件。

因此,我假設您想知道如何設置註冊系統。一種方法是創建一個用於註冊用戶的表,其中有e-mailtoken列。 E-mail很明顯,token是一個隨機生成的字符串(例如使用節點的crypto.randomBytes方法),它將作爲鏈接的一部分發送給用戶。進入鏈接後,您需要在數據庫中搜索該令牌,如果找到該令牌,則繼續註冊。

需要注意的兩件事:創建令牌時,確保它不在數據庫中。其次:使用valid_until列刪除超過幾個小時的令牌是一種很好的做法。

更新:

不幸的是,節點的base64出口沒有安全網址。因此,這是獲得安全令牌的最簡單的方法,我發現:

require('crypto').randomBytes(48, function(ex, buf) { 
    token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-')); 
}); 

Perhaps someone will come up with a better solution.

+0

謝謝你的回覆。我看到了node_mailer模塊,我對製作令牌的方法感興趣。但我需要看到一些可靠的例子,以查看任何防止黑客攻擊的做法。你的配方安全嗎? – Erik 2012-01-13 04:40:57

+1

嗯,我想它和電子郵件一樣安全。由於您還沒有密碼,因此您無法通過密碼驗證用戶,因此您必須相信知道通過電子郵件發送祕密令牌的用戶是實際的電子郵件所有者。如果您需要額外的保護,您可以隨時查看請求IP。 我不知道節點的例子,但我已經看到這個原理用在rails應用程序中。 – 2012-01-13 10:39:50

+0

謝謝。最後一個問題:我應該如何生成令牌?通過只使用crypto.randomBytes或我應該粘貼電子郵件+ IP +的東西? – Erik 2012-01-13 13:47:32

相關問題