微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

项目需求

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

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

代码片段

路由文件

rush:js;"> 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 入口文件中加入以下代码

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

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

原文地址:https://www.jb51.cc/vue/31552.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐