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


声明:本文转载自https://my.oschina.net/u/3041966/blog/1607207,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

项目需求

  • 项目是前后台分离,前端负责数据对接,以及业务逻辑的处理,后台只需要给相应的接口即可
  • 后台会控制接口的授权情况(即,未登录的接口,统一返回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;   }); }); 

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

本文发表于2018年01月15日 12:35
(c)注:本文转载自https://my.oschina.net/u/3041966/blog/1607207,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1814 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1