X小时Nodejs后我的链接过期



我正在发送此电子邮件邀请人们进行注册。这是我的路线

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('admin@teamfly.com',email,'Please signup through this link',html);
    req.flash('success','An invitation email sent to '+email);
    res.redirect('/');
});

现在我想在几个小时后禁用我的链接。我怎么做。

如果您身边不容易创建和管理代币及其到期时间的数据库,则可以使用JWT令牌,并在代币内部包含到期时间:https://jwt.io

特别是使用Node.js,您已经开发了库:https://www.npmjs.com/package/jsonwebtoken

创建JWT令牌时,您可以将" Execresin"选项设置为6H,并且它会自动创建" EXP"字段(因此您不必计算它)

然后,当您验证令牌时,它将自动检查它是否仍然有效

我将遵循的设计将是以下内容:

  • 在表"用户"中,您将拥有一个列:" registrationToken"," ExpirationTokendate'
  • 当您向他发送邀请时,在基础上创建用户,设置注册方式,他的电子邮件和ExpirationTokendate
  • 如果用户单击链接,请在基础上检查邮件 registrationToken:然后,如果当前日期大于到期tokendate,请告诉链接已过期,否则请让用户注册。
  • 如果您需要为用户发布新的注册方式,只需在基础上找到他的电子邮件并设置新的注册方式并更新ExpirationTokendate。

最新更新