[英]Best way to refresh JWT token using Node.js
我已经创建了node.js后端。 在登录时,我正在发送jwt令牌。 为了用户体验,我不希望他们重新登录,而是刷新他们的令牌,我将其设置为在4小时后过期。
但是,我没有有效地做到这一点的好线索。 我的想法是在客户端提供一个按钮,方法是单击用户可以刷新其令牌的按钮。 假设我可以从客户端拨打电话,我需要在实施方面提供帮助。 欣赏它。
if (response) {
bcrypt.compare(req.body.password, response.password, (error, result) => {
if (result) {
const token = jwt.sign(
{
email: response.email,
userId: response._id
},
process.env.JWT_KEY,
{
expiresIn: '4h'
});
return res.status(200).json({
message: 'Auth Successful! User Found. ',
token
})
} else {
return res.status(404).json({
message: 'Auth Failed! User Not found'
})
}
}
您将需要两个令牌:
Refresh Token
(将保存在数据库中) Access Token
(您的JWT将很快过期,例如10分钟) 刷新令牌通常不会很快过期。 但是,如何保护刷新令牌可能存在挑战。
您还需要在用户每次刷新令牌/登录时更改数据库中的刷新令牌。
您还需要存储访问令牌的expiry_date
(您可以通过登录api做出响应)。
然后,在前端,您可以根据安全要求将这些令牌存储在localStorage / sessionStorage中。
然后,每个API调用都会检查您设置的到期日期。 如果达到某个阈值(例如,expiry_date前5分钟),则可以调用刷新令牌API。
这是我使用的一种方法。 但是,它可能不被视为最佳实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.