vue-resource请求实现http登录拦截或者路由拦截的方法


Posted in Javascript onJuly 11, 2018

本文介绍了vue-resource请求实现http登录拦截或者路由拦截的方法,分享给大家,具体如下:

项目需求

  • 项目是前后台分离,前端负责数据对接,以及业务逻辑的处理,后台只需要给相应的接口即可
  • 后台会控制接口的授权情况(即,未登录的接口,统一返回401未授权状态码,前端根据vue-resource的拦截器拦截符合条件的状态,并做出相应的处理。)
  • 以下为两个系统的登录页面,作为请求超时或者登录拦截的跳转页面

vue-resource请求实现http登录拦截或者路由拦截的方法

以上是登录超时,登录弹窗框自动弹出来

代码片段

路由文件

export default [
 {
  name: 'root',
  path: '',
  component: function (resolve) {
   require(['你的vue文件路径地址'], resolve);
  },
  children: [
    {
      name: 'applicationLayout',
      path: '/app/applicationLayout/:appId',
      component: function (resolve) {
       require(['你的vue文件路径地址'], resolve);
      },
      meta: {
       requireAuth: true,    // 需要登录才能进入的页面可以增加一个meta属性
      }
    }
  ] 
]

main.js 入口文件中加入以下代码

const UNAUTHORIZED_CODE = 401;

router.beforeEach((to, from, next) => {
 if (to.meta.requireAuth) {
  if (storage.get('platformUser')) {
   store.dispatch('loginUser', JSON.parse(storage.get('platformUser')));    //将用户信息存储到vuex中,供全局使用
   next();
  } else {
   store.dispatch('initLoginModal', {state: true});     //显示登录弹窗
   next();
  }
 } else {
  next();
 }
});

//拦截http请求中返回401状态码,并针对其显示登录弹窗
Vue.http.interceptors.push((request, next) => {
 next((response) => {
  if (response.body.status === UNAUTHORIZED_CODE) { //与后台约定登录失效的返回码
   store.dispatch('initLoginModal', {state: true});        //显示登录弹窗
   store.dispatch('removeUser');                      //移出浏览器中存储的用户信息
  }
  return response;
 });
});

以上便能实现登录之前针对某些特定路由的拦截,和后台接口授权失效时前端业务逻辑操作处理, 整篇文章仅作知识点积累,如有不妥之处,请多多包涵。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery实现类似淘宝购物车全选状态示例
Jun 26 Javascript
js触发onchange事件的方法说明
Mar 08 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
Sep 10 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
详解angularJs指令的3种绑定策略
Apr 13 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 #Javascript
Vue.js实现的计算器功能完整示例
Jul 11 #Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 #Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 #Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 #Javascript
JS实现动态生成html table表格的方法分析
Jul 11 #Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 #Javascript
You might like
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
JavaScript Timer实现代码
2010/02/17 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
自学python用什么系统好
2020/06/23 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
用python写爬虫简单吗
2020/07/28 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
采购部部长岗位职责
2014/02/06 职场文书
化学教学随笔感言
2014/02/19 职场文书
职业规划实施方案
2014/06/10 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
采购员工作总结范文
2015/08/12 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js