如何解决前后端token过期问题
问题描述: 首先后端生成的token是有时限的,在一段时间后不管前端用户是否进行了访问后端的操作,后端的token都会过期,在拦截器阶段就会返回错误的请求:token过期,从而拿不到想要的请求数据.
解决思路: 每隔一段时间的后端请求中都将token传送过去获取新的token并返回前端放入cookies中并记录cookie的存储失控,达到更新cookie中token的效果;而长时间不做操作的话我们就可以让他的token失效退出系统了.
解决方式:我们的访问后端的请求都是jQuery的ajax请求.而这一类的ajax请求都可以通过$.ajaxSetup设置AJAX的全局默认设置。使用方法参考:http://www.runoob.com/jquery/ajax-ajaxsetup.html
现在说明一下我们使用了$.ajaxSetup的什么属性(先上一段伪代码):
$.ajaxSetup({
beforeSend:function(){
每次ajax请求前执行的操作;
}
},
complete:function(XMLHttpRequest,textStatus){
判断cookie中存储cookie的时间是否临近超时时刻了
如果临近的话 发送刷新token的请求; 存储新的token并且记录当前时刻
}
});
说明:
beforeSend:(在每次ajax请求之前都会执行的部分.)
这里进行了cookie中token的校验,如果没有token我们就会重载页面,然后用户会跳转到登录页面,(这里说明用户已经长时间没有操作过了,前端的cookie已经失效,所以我们需要用户去重新登录).
complete:请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。
在请求完成后我们直接调用vue的ajax去访问刷新token的controlle得到新的token并且在前端重置token.这里最好不要用jQuery的ajax请求,因为会形成死循环一直调用刷新token的请求.虽然$.ajax请求中有一个global属性控制是否为请求触发全局 AJAX 事件处理程序.但是个人测试将global设置为false没有成功解决循环问题.所以用了vue的ajax请求.
而vue的ajax请求如何使用?请看main.js中的代码.
---------------------
作者:桐桐桐
来源:CSDN
原文:https://blog.csdn.net/qq_31679735/article/details/79590850
版权声明:本文为博主原创文章,转载请附上博文链接!
如何解决前后端token过期问题的更多相关文章
- Nginx完美解决前后端分离端口号不同导致的跨域问题
笔者在做前后端分离系统时,出现了很多坑,比如前后端的url域名相同,但是端口号不同.例如前端页面为:http://127.0.0.1/ , 后端api根路径为 http://127.0.0.1:888 ...
- Django之使用中间件解决前后端同源策略问题
问题描述 前端时间在公司的时候,要使用angular开发一个网站,因为angular很适合前后端分离,所以就做了一个简单的图书管理系统来模拟前后端分离. 但是在开发过程中遇见了同源策略的跨域问题,页面 ...
- 解决前后端调用,跨域二次请求Access-Control-Max-Age
发现前后端分离的项目中,前端发起一个请求到后端,在Chrome浏览器下面debug的时候,Network下面看到同一个url有两条请求,url有两条请求,第一条请求的Method为OPTIONS,第二 ...
- 利用gulp解决前后端分离的header/footer引入问题
在我们进行前后端完全分离的时候,有一个问题一直是挺头疼的,那就是公共header和footer的引入.在传统利用后端渲染的情况下,我们可以把header.footer写成两个单独的模板,然后用后端语言 ...
- 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案
在前后端分离的项目中,前端和后端可能是在不同的服务器上,也可以是Docker上,那就意味着前端请求后端Restful接口时,存在跨域情况. 后端在做了通用的跨域资源共享CORS设置后,前端在做ajax ...
- mock的使用及取消,node模仿本地请求:为了解决前后端分离,用户后台没写完接口的情况下
借鉴:https://www.jianshu.com/p/dd23a6547114 1.说到这里还有一种是配置node模拟本地请求 (1)node模拟本地请求: 补充一下 [1]首先在根目录下建一个d ...
- 解决前后端分离后的Cookie跨域问题
一. 前端Ajax关键配置 $.ajax({ type: "post", url: xxx, data: xxx, contentType: 'application/json', ...
- php解决前后端验证字符串长度不一致
前端代码 function getStrleng(str){ var myLen =0; for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)& ...
- nginx配置反向代理解决前后端分离跨域问题
摘自<AngularJS深度剖析与最佳实践>P132 nginx配置文件如下: server { listen ; server_name your.domain.name; locati ...
随机推荐
- 基于swing的MySQL可视化界面
个人记录贴... 代码过烂不宜参考.. 效果展示 1.选择需要打开的数据库,查看数据库下的表. 2.双击打开一个表 3.没有CRUD.... 代码 test-main: import shell.DB ...
- [置顶] SNMPv3认证和加密过程
前面的一些文章详细讲解了SNMPv3的报文内容,下面主要的内容就是SNMPv3的加密和认证过程! USM的定义为实现以下功能: 鉴别 数据加密 密钥管理 时钟同步化 避免延时和重播攻击 1.UsmSe ...
- SQL Server2008安装图解
1).双击set.up安装:
- 端口安全检查shell脚本
#!/bin/bash #This script name is scan_analyse.sh . /etc/profile echo "start time is $(date)&quo ...
- MS08_067漏洞渗透攻击
MS08_067漏洞渗透攻击实践 前期准备 kali和winxp要ping通 kali开启msfconsole: 同时在这里可以看到目前可攻击载荷个数一共是471个,也可以看到其他攻击的数量如图. 用 ...
- HDU 4272 LianLianKan (状压DP+DFS)题解
思路: 用状压DP+DFS遍历查找是否可行.假设一个数为x,那么他最远可以消去的点为x+9,因为x+1~x+4都能被他前面的点消去,所以我们将2进制的范围设为2^10,用0表示已经消去,1表示没有消去 ...
- sapply
列表并非总是存储结果的最佳容器.有时,我们希望将结果放在一个向量或者矩阵中.sapply( )函数可以根据结果的结构将其合理简化.假设,我们将平方运算应用到 1:10 的每个元素上.如果使用 lapp ...
- Angular i18n
Angular2中使用ngx-translate进行国际化http://blog.csdn.net/u014291497/article/details/61233033 在 Angular 项目中添 ...
- 【Android】冷门常用 ADB
清除应用缓存adb shell pm clear 包名 获取手机中安装的包名,加上部分包名可以做筛选 adb shell pm list package adb shell pm list packa ...
- JVM虚拟机调优指南
本章通过阅读JVM垃圾搜集指南文档,整理虚拟机主要配置以及,理解不同的垃圾搜集器. 垃圾搜集算法 引用计数算法 根搜索算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 搜集算法网上有很多介 ...