背景:后台接口返回code==501表示用户是未登录状态,需要登录才可访问;

通过http拦截做路由跳转

第一步:src目录下新建http.js文件,内容如下:

import Axios from 'axios'
import { Loading, Message, MessageBox } from 'element-ui'
// 超时时间
Axios.defaults.timeout = 5000
// http请求拦截器
var loadinginstace
Axios.interceptors.request.use(config => {
// element ui Loading方法
loadinginstace = Loading.service({ fullscreen: true })
return config
}, error => {
loadinginstace.close();
Message.error({
message: '网络不给力,请稍后再试'
})
return Promise.reject(error)
})
// http响应拦截器
Axios.interceptors.response.use(data => {
// 响应成功关闭loading
loadinginstace.close();
const code = data.data.code;
if(code == 501) { //未登录
MessageBox.alert('请先登录', '提示', {
confirmButtonText: '确定',
callback: action => {
router.replace({
name: 'login',
query: {redirect: router.currentRoute.fullPath} //登录后再跳回此页面时要做的配置
})
}
});
}
return data
}, error => {
loadinginstace.close();
Message.error({
message: '网络不给力,请稍后再试'
})
return Promise.reject(error)
})

2.从main.js中引入

import './http.js'

3.登录页设置login.vue

                 if(this.$route.query.redirect){
this.$router.push({path: decodeURIComponent(this.$route.query.redirect)}) //跳转到原页面
}else{
this.$router.push({name: 'userIndex', query: {id: 0}});//正常登录流程进入的页面
}

2019-04-14更新:

tip1: 平台右上角需要显示用户名,后台在登录时返回了用户名称信息,将他放在cookie中,在头部组件中调用cookie获取用户名即可。

tip2: 刚开始把http.js的内容直接放到了main.js中,会出现以下问题:

每次页面刷新时,地址少个api

vue 根据接口返回的状态码判断用户登录状态并跳转登录页,登录后回到上一个页面(http拦截器)的更多相关文章

  1. Unity判断用户联网状态,WiFi/移动网络/无网络

    Unity判断用户联网状态 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  2. Java Web学习总结(21)——http协议响应状态码大全以及常用状态码

    http协议响应状态码大全以及常用状态码 当我们在浏览网页或是在查看服务器日志时,常会遇到3位数字的状态码,这3位数字是什么意思呢?其实,这3位数字是HTTP状态码,用来表示网页服务器HTTP响应状态 ...

  3. vue滚动行为控制——页面跳转返回上一个页面保留滚动位置

    需求分析: 一般这个功能在后台管理系统用的比较多,因为后台页面都是在当前页面打开,对于某些列表筛选页,如果列表数据比较多,页面就会滚动.当页面发生滚动,对列表数据进行查看或者编辑的时候,跳转到下一级页 ...

  4. Xamarin.Android 怎么定义一个按钮和返回键功能一样回到上一个界面

    https://zhidao.baidu.com/question/570934367.html页面之间的跳转有startActivity 和startActivityForResult两种,star ...

  5. h5 网络断网时,返回上一个页面 demo (与检测网络代码相结合,更直观看到结果)

    页面一: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  6. Flutter - 添加从左向右滑动,返回上一个页面

    很多App比如微信.IT之家等都支持从屏幕左侧向右滑动,来返回上一个页面. 很多iOS上的App也都支持. 那么这个神奇的手势滑动是怎么实现的呢? 其实非常简单,只需要添加一句话即可. platfor ...

  7. JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?

    history.back()和history.go(-1)都可以实现返回上一页并不刷新.History 对象包含用户(在浏览器窗口中)访问过的 URL. history.back() 等同于在浏览器点 ...

  8. android webview点击返回键回到上一个html

    android webview点击返回键返回上一个html @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( ...

  9. vue将接口返回的日期实时转换为几分钟前、几小时前、几天前

    项目开发中,各种需求都会遇到,有些需求很合理,也好实现,有些需求不能说不合理,就是太麻烦,就比如类似标题所描述这种的需求,你不能说它是不合理的需求,因为很多论坛或微博.朋友圈.QQ空间之类的这种效果还 ...

随机推荐

  1. day04-Python的流程控制

  2. 第十二章 NIO

    12.NIO 12.1 Java NIO 概述 1课时 12.2 Java NIO.2 之Path.Paths 与 Files 的使用 1课时 12.3 自动资源管理 1课时 12.4 缓冲区(Buf ...

  3. 【C++】atof()

    转自:https://blog.csdn.net/zhaoyl03/article/details/8176387 atof 是ascII to float的缩写,它将ascII字符串转换为相应的单精 ...

  4. 关于Java流

  5. CSS存在形式的引用

    撰写个css文件 直接引用css文件样式的内容.本质是将css文件拿过来

  6. python之路——10

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 a.函数可读性强,复用性强 def 函数名() 函数体 return 返回值 函数先定义后执行, b. ...

  7. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ...ubuntu 18.04 安装vim遇到的错误

    安装vim: sudo apt-get install vim-gtk 问题: E:无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E:无法锁定管理目录(/ ...

  8. [UE4]List View

    List View适合显示数以千条的列表 要点 一.创建Entry类,实现IUserObjectListEntry. 创建一个名为“EntryWidget”的UserWidget,添加如下图所示的控件 ...

  9. win10安装git

    Git官网下载:https://git-scm.com/download 选择win系统,下载.然后选择安装路径,一路next.安装成功后 打开cmd 输入 git --version 配置信息 设置 ...

  10. Activiti图表bpmn对应的xml文件

    当我们绘制了一个bpmn图表,实质是创建了一个xml文件, 右键bpmn文件open  with   xml edit <?xml version="1.0" encodin ...