关于Jwt的一些思考

在使用 jwt的过程中发现了两个问题 续期退出的问题。
续期

因为jwttoken在签发之后是有过期时间的,所以就存在管理这个过期时间的问题。我看网上有提出解决方案的大致有下面几个

  • 每次更新过期时间,跟session一样,每次请求的时候都会去更新下token过期时间.但是对于jwt来说,更新过期时间就意味着jwttoken会变,那么前端就需要每个请求都去保存一次新的token。这样使得前端的工作变的复杂起来。而且这样做的话,会存在多个令牌同时有效,可能会引起一些安全问题。
  • 还有一个就是每隔一段时间去更新一次token。这种做法也是很多人采用的一种。比如:token过期时间是一个小时。预设每五十五分钟去更新token。这种模式也是需要前端去配合完成的。
退出

因为token在签发之后在一段时间内是一直有效的,那么这种情况,我们怎么去管理登出呢?

  • 简单的方式就是客户端直接删除token。但是这样的话,如果token泄露了也是不安全的。
  • 有人提出退出的时候将token存放在redis中,过期时间设置为跟token的时候一样。当用户在次用旧的token访问的时候,如果发现redis中存在token,那么提示token过期。

对于续期的话,个人觉得第二种方案是比较好的一种方案。而退出的话,如果不考虑泄露的问题,那么第一种方案是比较好的一种方案。但是如果做SSO的话可能第二种方案是比较好的一种,但是在用到了redis之后就违背了jwt的设计初衷,需要与数据库交互。
其实个人觉得,jwt的加密方式结合redis这种也是可以采用的。毕竟这些都是为了解决问题。当利用到redis之后,我们就可以将jwt扩展下。在payload部分加载一个生成的refresh token ,这个refresh token也是有过期时间的,我们需要将这个refresh token存放在redis中。这样的话,我们就可以把jwt的过期时间放在这个refresh token中维护。续期也就是维护这个refresh token的过期时间,退出的话 也就是删除这个refresh token就可以了。
其实这样的话就跟传统的token验证一样了,也就是外层加了一个jwt的验证。
可能是我对于这方面了解的比较少,不能想到什么有效的方案。这些都是自己对jwt的一些理解。如果哪位大佬有更好的方案,希望赐教。感谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值