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中的isXX系列是否继续使用的分析
Apr 16 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
浅谈JavaScript数据类型
Mar 03 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
第六篇Bootstrap表格样式介绍
Jun 21 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
axios post提交formdata的实例
Mar 16 Javascript
vue.extend实现alert模态框弹窗组件
Apr 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
php基本函数汇总
2015/07/09 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
实例讲解v-if和v-show的区别
2019/01/31 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
python自动翻译实现方法
2016/05/28 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
如何写好升职自荐信
2014/01/06 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
三十年同学聚会感言
2015/07/30 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库