2012-01-12 16 views
11

私は1つのメールフィールドにサインアップフォームを持っています。ユーザーがメールを入力すると、登録リンクを送信する必要があります。Node.js - 登録時にメールを送信

私は、this SignatureフォームのNode.jsの例を見ました。しかし、それはsendWelcome機能しか持っていません。

登録メールを送信しているNode.jsアプリの例はありますか?

答えて

22

これまでの例は見たことがありませんが、二次質問は何ですか?あなたが提供した例は、電子メールの送信方法を非常によく示しています。

https://github.com/Marak/node_mailer

もよく電子メールを送信する方法について文書化しているようだ:別のオプションは、このパッケージを使用することです。

したがって、私はあなたがサインアップシステムを設定する方法を知りたいと思っています。これを行う1つの方法は、ユーザーを登録するためのテーブルをe-mailtokenという列にすることです。 E-mailが明らかである場合、tokenは、ランダムに生成された文字列(ノードのcrypto.randomBytesメソッドなど)で、ユーザーへのリンクの一部として送信されます。リンクに入ると、データベースでこのトークンを検索し、見つかった場合は登録を続行します。

2つの注意点:トークンを作成するときは、トークンがすでにdbに存在しないことを確認してください。 2番目:数時間より古いトークンを削除するには、valid_until列を使用することをお勧めします。

更新:

残念ながら、ノードのbase64で輸出は、URLセーフではありません。したがって、これは私が見つけたセキュアトークン取得する最も簡単な方法です:

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

+1

まあ、それは電子メールと同じくらい安全だと思います。まだパスワードを持っていないので、パスワードでユーザーを確認することはできません。したがって、電子メールで送信する秘密のトークンを知っているユーザーが実際の電子メールの所有者であると信じなければなりません。特別な保護が必要な場合は、時間とともに要求IPをチェックすることができます。 私はノードの例についてはわかりませんが、私はこの原理をレールアプリで使用しています。 –

+0

ありがとうございます。最後の質問:どのようにトークンを生成するのですか? crypto.randomBytesのみを使用するか、メール+ IP +何かを接着する必要がありますか? – Erik

関連する問題