欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

json web token过期后怎么搞

2

现在不是流行restful么,认证的时候用jwt,token有过期时间,有人说时间越短越好,
那过期后怎么认证,要在登录吗,过期时间多久比较好

 
 
 

查看全部 8 个回答

推荐答案

6

已采纳

楼上的都在说什么!不要乱误导人!你们到底看过 RFC7519 文档吗,你们有实现过JWT吗?!

第一名说过期时间5秒的也是够了,居然还有赞!!!!

segmentfualt现在的回答都是这种水准吗?

JWT实现的时候,一般会有两个过期时间

  • 第一个是Token本身的过期时间,这个时间一般1到2个小时,不能太长,也可以在短一点,不过5s的简直纯属扯淡。

  • 第二个是Token过期后,再次刷新的有效期,也就是Token过期后,你还有一段时间可以重新刷新,把过期的Token发给服务端,如果没有过刷新截止期,则服务端返回一个新的Token,不再需要通过用户名密码重新登录获取Token了。

所以为了减少过期后重新获取Token所带来的麻烦,我们一般在每次Http请求成功后,将目前的Token刷新,然后可以在Http响应中返回新的Token。

JWT由于过期数据(exp claim)是封装在Payload中的,所以必须返回一个新Token,而不是在旧Token的基础上刷新。

但是在并发的时候也会出现问题,如果前一个请求刷新了Token(为了安全,刷新后一般会把旧Token加入黑名单),后面的请求使用了一个旧的Token像服务请求数据,这个时候请求会被拒绝。

可以说这真的是JWT的一个缺陷,目前没有特别好的办法来解决并发刷新的问题。

不过可以通过设置一个宽限时间,在Token刷新后,如果旧Token仍处于刷新宽限时间内,就放行。

我最近在写一个JWT的扩展包,给Lumen用的,如果想了解一些JWT的原理,构成,可以关注我的专栏,和这个系列的文章。

来自 https://segmentfault.com/q/1010000002449556/a-1020000002450594


普通分类: