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')