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 相关文章推荐
JavaScript等比例缩放图片控制超出范围的图片
Aug 06 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
May 07 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
js实现上一页下一页的效果【附代码】
Mar 10 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
关于session和cookie的简单理解
Jun 08 Javascript
Vue.js基础知识小结
Jan 13 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 Javascript
Node.js创建一个Express服务的方法详解
Jan 06 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
多人战的战术与战略
2020/03/04 星际争霸
PHP中实现图片的锐化
2006/10/09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python的flask框架难学吗
2020/07/31 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
人力资源主管职责范本
2014/03/05 职场文书
生产车间标语
2014/06/11 职场文书
学习教师法的心得体会
2014/09/03 职场文书
妇产科护理心得体会
2016/01/22 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL