我正在发送此电子邮件邀请人们进行注册。这是我的路线
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。