首页 > 编程 > JavaScript > 正文

vue-resource请求实现http登录拦截或者路由拦截的方法

2019-11-19 13:30:42
字体:
来源:转载
供稿:网友

本文介绍了vue-resource请求实现http登录拦截或者路由拦截的方法,分享给大家,具体如下:

项目需求

  • 项目是前后台分离,前端负责数据对接,以及业务逻辑的处理,后台只需要给相应的接口即可
  • 后台会控制接口的授权情况(即,未登录的接口,统一返回401未授权状态码,前端根据vue-resource的拦截器拦截符合条件的状态,并做出相应的处理。)
  • 以下为两个系统的登录页面,作为请求超时或者登录拦截的跳转页面

以上是登录超时,登录弹窗框自动弹出来

代码片段

路由文件

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; });});

以上便能实现登录之前针对某些特定路由的拦截,和后台接口授权失效时前端业务逻辑操作处理, 整篇文章仅作知识点积累,如有不妥之处,请多多包涵。希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表