使用JWT创建node.js后端应用程序。对我来说,要求很简单,授权令牌不应该有任何到期时间。但是当JWT无效时我遇到问题当用户更改密码时。
当用户更改密码时,我将创建一个新的JWT令牌,并删除旧令牌,但用户仍然可以使用他的旧JWT令牌(来自其他登录设备)并可以访问该应用程序。
那么有人能告诉我如何避免这种情况吗?
答案 0 :(得分:3)
对我来说,这似乎是一个熟悉的问题,我已经回答了类似的问题Best practices to Invalidate a JWT Token 。
所以解决你的问题的步骤如下,
当用户登录时,在他的用户数据库中创建一个没有到期时间的登录令牌。
因此,在使JWT无效时,请按照以下步骤进行操作
所以基本上你需要在用户的数据库中存储令牌并在失效时使用它。简单:)
答案 1 :(得分:2)
JWT的exp声明是可选的。如果令牌没有令牌,则认为令牌没有过期
根据https://www.npmjs.com/package/jsonwebtoken的文档,expiresIn字段也没有默认值,因此只需将其忽略即可。
var token = jwt.sign({email:'sivamanismca@gmail.com',role:'User'}, "Secret", {});
答案 2 :(得分:0)
你不能使我所知道的JWT令牌无效,我总是建议总是有一个短暂的过期时间,最长持续时间为一周。首先要让你的应用程序检查你的令牌是否很难实现当有效时,有时会生效并请求新的令牌,允许您刷新令牌或检查令牌是否对大多数JWT库有效。现在,如果你坚持要保留你的令牌没有过期时间,那么我建议保留一份你的中间件会检查的黑名单。在here之前有一个类似的问题。希望这有帮助