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 动态创建VML的方法
Oct 14 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
layui前端框架之table表数据的刷新方法
Aug 17 Javascript
js实现蒙版效果
Jan 11 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python通过socketserver处理多个链接
2020/03/18 Python
python使用建议技巧分享(三)
2020/08/18 Python
python 操作excel表格的方法
2020/12/05 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
自我评价格式
2014/01/06 职场文书
旅游项目开发策划书
2014/01/18 职场文书
小学生常见病防治方案
2014/06/06 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis