java jwt如何刷新jwt token 过期时间间

A,B系统是前后端分离的。
现在A系统一个页面跳转到B系统中。
现在是用的跳转到B系统,地址栏中带了一个加密token (包含用户id).帮其自动登陆上了。
此页面显示的商品信息和该用户的折扣。

此时假如我知道了别人的token,然后修改地址栏。页面就变成别人的信息了。

此时我都不知道别人的账号密码,然后就获得了别人的一些用户信息.

}

前后端分离,使用token的方式校验用户信息,我选择了,使用的教程在网上可以找到很多,不做介绍。

这里说明一个使用过程中,最重要的的一个环节刷新token带来的问题。

用户登录一次之后,前端保存token,后面每次向后端请求的时候,header都带上authorization信息,后端从请求中解析token,根据token验证用户信息,返回相应的信息。

相信大部分看过文档并开始使用的同学都已经走通到这里了,下面是入坑的开始:

,会和前端产生一个跨域的影响,请记得一定要设置 设置跨域的时候还要设置一个Cache-Control,这个东西出现的问题真的是莫名其妙,坑了我很久..

2) 一般是在中间件中刷新token,当前请求继续走,如何在controller中需要根据token调取登录用户信息?


 一下子可能没说明问题,简单理解为:token已经刷新了,那么当前token肯定失效了,继续在controller利用请求中的token肯定会报token失效的错误,这里需要将新token带到后面的程序处理中,我这里更改了当前请求头,将newToken替换了request header中的Authorization。

3) 并发请求。也就是2个小时候之后,同一个页面发来了2个请求,这个很正常,比如一个请求列表数据,一个请求搜索的表单,因为token都已失效,那么难道返回2个新的token回去?


 这个问题找了在github里面看到了issue但是无人回答,jwt肯定不会发两个新的token回去的,那麽肯定会有一个token不仅是失效了,刷新当前token之后,产生新的token,旧token加入到了backlist中了,无法使用,那么另外一个请求自然无法成功。我这里使用Redis解决的,将旧token作为键,新token作为值,设置一个30秒过期的时间。当第二个请求来的时候,已经知道token在backlist中了,我们可以去redis查询下是否存在这么个旧token,存在的话放行。

一整天的时间耗在这里了,实践才会发现问题,累并快乐着解决了^_^

}

版权声明:本文为博主原创文章,未经博主允许不得转载。 /sinat_/article/details/

}

我要回帖

更多关于 jwt token 过期时间 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信