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 相关文章推荐
学习JS面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
屏蔽script注入小例子
Nov 12 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
深入分析node.js的异步API和其局限性
Sep 05 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
vue通过watch对input做字数限定的方法
Jul 13 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 Javascript
vue实现lodop打印功能的示例
Nov 11 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
php异常处理捕获错误整理
2019/09/23 PHP
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
vue实现页面加载动画效果
2017/09/19 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
Mac下安装vue
2018/04/11 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python实现简单的购物程序代码实例
2020/03/03 Python
Python Django搭建网站流程图解
2020/06/13 Python
详解python with 上下文管理器
2020/09/02 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
python 实现客户端与服务端的通信
2020/12/23 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
工程质量月活动方案
2014/02/19 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python