Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在X小时nodejs后终止我的链接_Javascript_Node.js - Fatal编程技术网

Javascript 在X小时nodejs后终止我的链接

Javascript 在X小时nodejs后终止我的链接,javascript,node.js,Javascript,Node.js,我发这封邮件是为了邀请人们注册。这是我的路线 router.post(“/invite supervisor”,(请求、回复)=>{ const email=req.body.invite_email; const secretToken=randomstring.generate(); //console.log('Email:',Email); //撰写电子邮件 consthtml=`你好 要注册,请单击以下链接并粘贴您的秘密令牌进行注册。 令牌:${secretToken} 祝你今

我发这封邮件是为了邀请人们注册。这是我的路线

router.post(“/invite supervisor”,(请求、回复)=>{
const email=req.body.invite_email;
const secretToken=randomstring.generate();
//console.log('Email:',Email);
//撰写电子邮件
consthtml=`你好

要注册,请单击以下链接并粘贴您的秘密令牌进行注册。

令牌:${secretToken}



祝你今天愉快; // mailer.sendmail('admin@teamfly.com,电子邮件,'请通过此链接注册',html); 请求flash(“成功”,一封邀请电子邮件发送至“+电子邮件”); res.redirect('/'); });

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

如果您不容易创建和管理令牌及其过期时间的数据库,您可以使用JWT令牌,并将过期时间包含在令牌本身中:

特别是对于Node.js,您已经为其开发了完善的库:

当您创建JWT令牌时,您可以将“expiresIn”选项设置为6h,它会自动创建“exp”字段(因此您不必计算它)


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

我将遵循以下设计来实现这一点:

  • 在“user”表中,您将有一列:“RegistrationToken”、“ExpirationTokenDate”
  • 向用户发送邀请时,在base中创建用户,设置RegistrationToken、他的电子邮件和ExpirationTokenDate
  • 如果用户单击链接,请签入mail+registrationToken: 然后,如果当前日期大于expirationTokenDate,则告诉链接已过期,否则,让用户注册
  • 如果您需要为用户颁发新的registrationToken,只需在base中找到他的电子邮件,设置新的registrationToken并更新ExpirationTokenDate

将令牌存储在数据库中,计算并存储它将过期的时间,并在用户使用该令牌激活此路由时检查它是否过期。在数据库中存储为用户发送邮件的时间戳,然后比较该时间戳,如果用户单击此时间戳,则显示成功或错误页面。你的问题是什么?或者使用每小时一次的PAD,或者你可以在令牌中编码时间戳以及HMAC,一旦他们访问注册页面,你可以验证/检查HMAC。如果你遵循数据库解决方案,我鼓励你使用Redis。是的,这确实是HMACs/JWTs的一个很好的用例。