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关于select的相关操作说明
Jan 13 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
Dec 04 Javascript
js简单倒计时实现代码
Apr 30 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
js实现简单的随机点名器
Sep 17 Javascript
Vue接口封装的完整步骤记录
May 14 Vue.js
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
收音机术语解释
2021/03/01 无线电
PHP 地址栏信息的获取代码
2009/01/07 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
JS跨域总结
2012/08/30 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
python中强大的format函数实例详解
2018/12/05 Python
Python logging设置和logger解析
2019/08/28 Python
python excel和yaml文件的读取封装
2021/01/12 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
安全第一课观后感
2015/06/18 职场文书
2016七夕情人节感言
2015/12/09 职场文书
Python数据类型最全知识总结
2021/05/31 Python
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers