概要说明
在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登陆状态才能访问数据,当没有登陆的情况,这个时候我们需要跳转到登陆界面进行登陆。
如果每次请求都要做如下处理,我们的程序逻辑将无比混乱,ajax可以为我们解决这个问题
具体实现思路是:
1.发送ajax请求访问后端数据。
2.后段如果发现没有登陆,那么将会丢出一个exceptionaction的http相应头。
3.这个判断将在ajax拦截中处理,只要有这个exceptionaction响应头,我们会检查是否有登陆token,如果没有就会去到登陆界面,如果有则尝试使用token自动登陆。
这个过程将在拦截中完成。
这个好处是 客户只需要关注业务代码的编写,登陆处理放到拦截中处理,而且所有的请求将都会被拦截
实现代码
//lib/axios const axiosInstance = axios.create({ timeout:2000, headers:{ 'Content-Type':'application/x-www-form-urlencoded', 'X-Requested-With':'XMLHttpRequest' } })
axios 是我们访问后台的js框架
定义拦截处理
//lib/axios function interceptAjax(res){ const tmp = res.headers['exceptionaction']; if(!tmp) return res; //系统已经登陆 const token = RxUtil.getCache('token'); if(!token){ router.push({ name:'login' }); return; } }
使用拦截器
axiosInstance.interceptors.response.use(res => interceptAjax(res));
这样每次访问都会经过拦截器,这也给我们一些思路,一些需要统一验证的访问,可以通过拦截器进行处理