JWT token 如何实现注销或登出

可能的解决方案:

  • 将JWT存储在数据库中。您可以检查哪些令牌有效以及哪些令牌已被撤销,但这在我看来完全违背了使用JWT的目的。
  • 从客户端删除令牌。这将阻止客户端进行经过身份验证的请求,但如果令牌仍然有效且其他人可以访问它,则仍可以使用该令牌。这引出了我的下一点。
  • 令牌生命周期短。让令牌快速到期。根据应用,可能是几分钟或半小时。当客户端删除其令牌时,会有一个很短的时间窗口仍然可以使用它。从客户端删除令牌并具有短令牌生存期不需要对后端进行重大修改。但是令牌生命周期短意味着用户因令牌已过期而不断被注销。
  • 旋转代币。也许引入刷新令牌的概念。当用户登录时,为他们提供JWT和刷新令牌。将刷新令牌存储在数据库中。对于经过身份验证的请求,客户端可以使用JWT,但是当令牌过期(或即将过期)时,让客户端使用刷新令牌发出请求以换取新的JWT。这样,您只需在用户登录或要求新的JWT时访问数据库。当用户注销时,您需要使存储的刷新令牌无效。否则,即使用户已经注销,有人在监听连接时仍然可以获得新的JWT。
  • 创建JWT黑名单。根据过期时间,当客户端删除其令牌时,它可能仍然有效一段时间。如果令牌生存期很短,则可能不是问题,但如果您仍希望令牌立即失效,则可以创建令牌黑名单。当后端收到注销请求时,从请求中获取JWT并将其存储在内存数据库中。对于每个经过身份验证的请求,您需要检查内存数据库以查看令牌是否已失效。为了保持较小的搜索空间,您可以从黑名单中删除已经过期的令牌。(根据令牌剩余有效期设置内存数据失效时间,达到自动清除的目的)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值