2017-12-05 8 views
0

をnodejsた後、私は今、私はいくつかのhours.How後に私のリンクを無効にしたいregistration.Thatの私のルートXの時間が

router.post('/invite-supervisor', (req,res) => { 
    const email = req.body.invite_email; 
    const secretToken = randomstring.generate(); 
    // console.log('Email :',email); 

    //Composing email 
    const html = `Hi there 
    <br/> 
    To get registered please click on the following link and paste your secret token for registration. 
    <br/><br/> 
    Token : ${secretToken} 
    <br/><br/> 

    <a href="http://localhost:3000/signup/${secretToken}">http://localhost:3000/signup/${secretToken}</a> 

    <br/><br/> 
    Have a good day!`; 

    //<a href="http://localhost:3000/users/verify/${secretToken}">p</a> 

    mailer.sendEmail('[email protected]',email,'Please signup through this link',html); 
    req.flash('success','An invitation email sent to '+email); 
    res.redirect('/'); 

}); 

ために人々を招待し、この電子メールを送信しています、私のリンクを期限切れ私はそれをすることができますか?

+1

トークンをデータベースに格納し、有効期限を計算して保存し、ユーザーがそのトークンでこのルートをアクティブにしたときに期限切れになっているかどうかを確認します。 – msanford

+0

ユーザーがメールを送信した時刻のデータベースにタイムスタンプを格納し、そのタイムスタンプを比較して、ユーザーがこのタイムスタンプをクリックすると成功またはエラーページを表示します。あなたの質問は何ですか? – k0pernikus

+0

代わりに1時間ごとのワンタイムパッドを使用してください –

答えて

1

それはトークンとその有効期限のためのデータベースを作成し、管理するためにあなたの側に容易ではない場合は、JWTのトークンを使用し、トークン自体の内部の有効期限を含めることができますが:https://jwt.io

特に、Node.jsの持つあなたはhttps://www.npmjs.com/package/jsonwebtoken

"expiresIn"オプションを6hに設定すると、自動的に "exp"フィールドが作成されるので(カウントしないようにする)

トークンを確認すると自動的にトークンが確認されますチェックそれはまだ

+0

はい、これは本当にHMAC/JWTの大きなユースケースです。 –

0

私は次のようになり、これを実装するためにたどる設計有効である場合:「ExpirationTokenDate」 、「RegistrationToken」:テーブル「ユーザー」で

  • あなたが列を持っています
  • 招待状を送信してRegistrationToken、彼のEメール、ExpirationTokenDateを設定したら、ベースでユーザーを作成してください
  • ユーザーがリンクをクリックした場合、メール+ registrationToken: をチェックインしてください。 expirationTokenDateよりも、リンクが期限切れであることを伝えます。そうでない場合は、ユーザーに登録。
  • ユーザーに新しいregistrationTokenを発行する必要がある場合は、自分の電子メールをベースで見つけて新しいRegistrationTokenを設定し、ExpirationTokenDateを更新してください。
関連する問題