如何在节点js中自动对jwt令牌到期进行休息调用

时间:2018-02-01 07:28:28

标签: javascript node.js jwt

我在我的节点js应用程序中使用JWT令牌进行身份验证,并在生成新令牌时使用字段custid,token,sessionValid(boolean)在数据库中进行更新。

现在我已将令牌到期时间设置为5分钟。因此,一旦令牌过期,它应自动更新db记录并使sessionValid为false。我有一个休息调用来更新DB。原因是采用这种方法是我实现SSO,而另一个应用程序将使用相同的休息调用进行会话验证。

以下是我如何生成令牌

的代码
var isExpired = false;
router.post('/auth', passport.authenticate(  
'local', {
   session: false
 })generateToken, inserttoken,respond);

 function generateToken(req, res, next) {  
    token = jwt.sign({
    id: req.user.id,
    },SECRET, {
    expiresIn: 5 * 60
  });
    req.token = token;
    next();
  }

  function inserttoken(req,res,next){
    //In this function Im doing rest call to update the db with the token generated 
  }

   function respond(req, res) { 
    res.cookie('customerid', req.user.id, { expires: new Date(new Date().getTime()+1*60*
    1000),httpOnly: true })
    res.cookie('token', req.token, { expires: new Date(new Date().getTime()+1*60*
    1000), httpOnly: true })
    res.status(200).json({
    user: req.user,
    token: req.token
  });
 }

那么当令牌过期时,如何自动自动进行休息呼叫并更新数据库。我甚至将这些保存在我的饼干中。

任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

  

如果您正在存储令牌,那么您不会关注无会话。所以   它不是一种RESTful。

JWT令牌基于签名,可以验证,需要存储。 要维持会话,请在前端更新令牌,并保持到期时间。

Please follow this link for better understanding

希望有所帮助!

答案 1 :(得分:0)

如果你在控制器中使用角度作为前端,你可以在间隔中反复调用方法并在后端发送它以检查它是否有效,否则需要存储JWT令牌。或者其他选项是将JWT存储在在到期呼叫休息时设置cookie并设置到期时间。