Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Node.js 如何验证令牌是否过期_Node.js_Express_Oauth_Async Await_Sequelize.js - Fatal编程技术网

Node.js 如何验证令牌是否过期

Node.js 如何验证令牌是否过期,node.js,express,oauth,async-await,sequelize.js,Node.js,Express,Oauth,Async Await,Sequelize.js,我想验证令牌是否过期,然后发送状态和消息 async function verify () { const ticket = await client.verifyIdToken({ idToken: req.body.token, audience: CLIENT_ID }) const payload = ticket.getPayload() let email = payload['email'] return User .findOne({

我想验证令牌是否过期,然后发送状态和消息

 async function verify () {
  const ticket = await client.verifyIdToken({
    idToken: req.body.token,
    audience: CLIENT_ID
  })
  const payload = ticket.getPayload()
  let email = payload['email']
  return User
    .findOne({
      where: { email: email }
    })
    .then(user => {
      if (!user) {
        return next(boom.notFound('User not found'))
      }
      let token = jwt.sign({user}, config.secret, {
        expiresIn: 86400 // expires in 24 hours
      })
      user.token = token
      return res.status(200).send(user)
    })
}
verify().catch(console.error)}

我一直在访问client.isTokenExpiring(),但没有发现错误

这是对您问题的粗略客户端回答。我记得在你之前链接到这里的一篇文章中,你正在使用谷歌网络登录,所以我从客户的角度回答了这个问题

对于这个问题,我没有与您相同的代码,但通常我是这样做的:

从令牌中提取到期日期。检查当前时间是否晚于或等于令牌上的到期时间,然后对您正在使用的auth实例调用
reloadAuthResponse
方法。这将更新您的令牌。事实上,每次电脑从睡眠中醒来,我都会这样做

此代码段包含moment.js中用于比较时间的帮助函数,但总体思路如下:

if(now.isSame(exp) || now.isAfter(exp)) {
    gapi.auth2.getAuthInstance().currentUser.get().reloadAuthResponse().then(function() {
        // do something with the new token
    });
}

这是什么类型的代币?我认为这个问题需要更多的背景来回答。此函数正在签名一个
jwt
,但是您还想验证上面的
idToken
?您能提供更多详细信息吗?我收到一个谷歌令牌,并验证该令牌,然后我从谷歌令牌中提取电子邮件,并在我的数据库中查找电子邮件,如果我使用用户生成令牌,并使用生成的令牌返回模型用户。但现在我想做的是:捕获google令牌是否已被扩展,如果是,则执行如下操作:
res.status(401).json({'err':'token has expired')