问题
我正在制作一个使用 JWT 来维护会话的应用程序。当任何新用户注册时,我会为用户提供一个 JWT 令牌并将其存储在我的数据库和用户的浏览器中。当用户注销时,我会从浏览器和数据库中删除该令牌。
但我想,如果用户从多个设备登录,那么它将从一个设备而不是另一个设备注销。我怎样才能做到这一点?
回答
首先,JWT 应该不能“注销”。但是会自动过期,这就是为什么你应该设置一个短的 expiresIn 时间。
这是因为在 JWT 中,会话由客户端处理,服务器不负责注销用户,但用户丢弃了 JWT。
在您的情况下,我假设您在允许用户之前检查数据库是否存在 JWT,因此您只需要搜索并删除与该帐户关联的其他 JWT。
但是,如果您想保持干净,请接受 JWT 的逻辑:设置较短的生命周期并等待它们过期。
|