vue拦截器实现统一token,并兼容IE9验证功能


Posted in Javascript onApril 26, 2018

项目中使用vue搭建前端页面,并通过axios请求后台api接口,完成数据交互。如果验证口令token写在在每次的接口中,也是个不小的体力活,而且也不灵活。这里分享使用vue自带拦截器,给每次请求的头部添加token,而且兼容了IE9。

import axios from 'axios';
// 这里的config包含每次请求的内容,在这里把token放到请求头
axios.interceptors.request.use(function (config) { 
  let token = window.localStorage.getItem("tokenid"); //从缓存中取token
  if (token) {
    config.headers.Authorization = token;  //将token放到请求头发送给服务器
    //这里主要是为了兼容IE9
    var browser = navigator.appName;
    var b_version = navigator.appVersion;
    if (browser == 'Netscape' && b_version.indexOf(';') < 0) { //火狐
    } else {
      if (b_version.indexOf(';') < 0) {
        return config;
      }
      var version = b_version.split(";");
      var trim_Version = version[1].replace(/[ ]/g, "");
      if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") { //IE9
        if (config.url.indexOf('?') > 0) {
          config.url = config.url + "&token=" + JSON.parse(token).value;
        }
        else {
          config.url = config.url + "?token=" + JSON.parse(token).value;
        }
      }
    }
  } else {
    localStorage.clear(); //清空缓存
    if (router.currentRoute.name && router.currentRoute.name.toLowerCase() == "login") { 
  
//这里需要排除登陆(或者说是第一次请求获取token)的时候的请求验证,我这里没做处理


  //我的后台api接口,并没有对login接口做token验证,所以这里不做处理
    } else {  


  

//除登陆接口外,其他需要token验证的方法,会走这里且返回null
      return null;
    }
  }
  return config;
}, function (err) {
  // return Promise.reject(err);
});
// http response 拦截器
axios.interceptors.response.use(
  response => {
    return response; //请求成功的时候返回的data
  },
  error => {
    try {
      if (error.response) {
        switch (error.response.status) {
          case 401://token过期,清除token并跳转到登录页面
            localStorage.clear();
            var baurl = window.location.href;
        

 router.replace({
                path: 'login',
                query: { backUrl: baurl }
              });           
            return;
        }
      }
      return Promise.reject(error.response.data)
    }
    catch (e) {
    }
  });

写在后面。因为我的token放在了缓存中,所以在每次请求前,我会先在前端取出token,并验证其时效性,如果过期或不存在会先跳转到登陆页,而不会走拦截器去请求请求。具体也参考mounted()方法。

总结

以上所述是小编给大家介绍的vue拦截器实现统一token,并兼容IE9验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
Aug 21 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
微信小程序实现文字跑马灯效果
May 26 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
详解easyui基于 layui.laydate日期扩展组件
Jul 18 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
使用Vue动态生成form表单的实例代码
Apr 26 #Javascript
Javascript的console['']常用输入方法汇总
Apr 26 #Javascript
r.js来合并压缩css文件的示例
Apr 26 #Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 #jQuery
Webpack打包字体font-awesome的方法示例
Apr 26 #Javascript
webpack配置打包后图片路径出错的解决
Apr 26 #Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 #jQuery
You might like
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Python对excel文档的操作方法详解
2018/12/10 Python
使用Python实现分别输出每个数组
2019/12/06 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
创意广告词
2014/03/17 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
故宫的导游词
2015/01/31 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
刑事案件上诉状
2015/05/23 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
Python中time标准库的使用教程
2022/04/13 Python