背景:最近项目jwt用户认证方式關于jwt本人就不再赘述,大家可自行百度
jwt token基本流程是这样的:
本项目的需求是生成token的过期时间为10分钟,如果用户未操作时间超过10分钟则需重新登录,如果一直有操作则要给token延长过期时间。
找了很久都沒能找到延长token过期时间的方法,网上大都说的是采用生成新token的方式最终决定采用如下方式解决:每个请求都去检查token,如果该token离过期时间還剩1分钟则重新生成token,将新生成的token放入响应头中前端ajax请求完成后,去response headers中查找token如果有,则替换掉原来存在localstorage中的token(即后面所有的请求都采用新的token)看上去觉得没有什么难的,其中遇到个很棘手的问题由于本项目采用的是spring cloud架构,前后端完全分离所有的ajax请求都是跨域ajax的,以至于在前台getResponseHead('token')时无法获取到响应头中的token。郁闷良久最终找到一个解决方案,在后台header中添加
后台代码 (返回时 转json格式括在js洎定义回掉函数名里)
思路:通过命令行修改浏览器启動参数使得浏览器不进行跨域ajax检查,从而允许跨域ajax
但是这种方法有三个缺点:
1.每次启动浏览器都需要通过命令行启动,太过繁琐
2.该方法会导致安全性方面的问题
3.该方法是客户端方面的改动在实际使用中,在每个客户端上都禁止浏览器进行跨域ajax检查不太现实所以实用性较低。
总的来说该方法虽然可以解决跨域ajax问题,但是价值不大在实际项目中,主要对服务器端进行改动使得支持跨域ajax
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。