删除 JWT 中引用的资源时验证负载

Verifying payload when deleting a resource referenced in a JWT

我正在使用 JWT 进行身份验证,我只在其中放入了数据库中的用户 ID。然后在验证令牌后,我将根据每个请求访问该有效负载。这很好用! 问题是当用户以某种方式被删除时,令牌中的用户 ID 无效。但令牌本身并不知道用户已从数据库中删除。而且我无法强制使令牌失效,因为它会在特定时间内过期。

是否可以对每个请求执行数据库查询以查看用户 ID 是否真的在数据库中?我可以想象这不是一个好的解决方案,因为它在处理许多经常收到的请求时真的很慢。

事实上,使用 JWT 令牌的优势之一是您无需与中央服务器或数据库对话即可验证其有效性。

这样做的缺点是很难撤销令牌。如果您查询数据库来验证令牌,则会损害系统的可扩展性并引入单点故障。

更好的方法可能是不撤销令牌并缩短令牌的生命周期。如果客户端必须像每 15 分钟更新一次令牌,则可能不再需要撤销。