我正在使用JWT创建一个Node.js后端应用程序。对我来说,要求很简单,授权令牌不应该有任何过期时间。但是,在用户更改密码时,我遇到了使JWT失效的问题。
当用户更改密码时,我将创建一个新的JWT令牌并删除旧令牌,但用户仍然可以使用他的旧JWT令牌(来自其他已登录设备)并访问应用程序。
那么有人能告诉我如何避免这种情况吗?
我正在使用JWT创建一个Node.js后端应用程序。对我来说,要求很简单,授权令牌不应该有任何过期时间。但是,在用户更改密码时,我遇到了使JWT失效的问题。
当用户更改密码时,我将创建一个新的JWT令牌并删除旧令牌,但用户仍然可以使用他的旧JWT令牌(来自其他已登录设备)并访问应用程序。
那么有人能告诉我如何避免这种情况吗?
这对我来说似乎是一个熟悉的问题,我已经回答了类似的问题 最佳实践: 如何使 JWT 无效 .
因此,解决您的问题的步骤如下:
当用户登录时,在他的用户数据库中创建一个没有过期时间的登录令牌。
因此,在使 JWT 失效时,请按照以下步骤进行操作:
因此,基本上您需要在用户数据库中存储令牌,并在使其无效时使用它。 简单 :)
JWT 的 exp 声明是可选的。如果一个令牌没有它,那么就认为它不会过期。
根据 https://www.npmjs.com/package/jsonwebtoken 的文档,expiresIn 字段也没有默认值,所以可以省略它。
var token = jwt.sign({email:'sivamanismca@gmail.com',role:'User'}, "Secret", {});