思路:首先在request.js中的响应拦截器这块写token失效的提示,然后再让它进行清空token和路由跳转
第一步:在request.js文件中 导入
import store from '@/store'
import { logout } from '@/store/actions/login'
第二步:在响应拦截器下写代码:
简单粗暴法:直接使用window.location.href='/#/login',当然还有另外一种做法请看最下面↓
具体代码如下:
// 响应拦截器 处理返回异常 数据脱壳
instance.interceptors.response.use(function (response) {return response.data},function (error) {console.log(error)console.dir(error)// 如果没有网络,if (!error.response) {message.error('网络异常')} else if (error.response.status === 401) {message.error('身份过期,请重新登录')// 1.清空token信息store.dispatch(logout())// 2. 路由跳转 -> login页面window.location.href = '/#/login'}return Promise.reject(error)}
)
// 退出功能
export const logout = () => {return (dispatch) => {// 1. 清空tokenremoveToken()// 2. 清空reduxdispatch({ type: DEL_TOKEN })dispatch({ type: DEL_USERINFO })}
}
第二种跳转的做法:
第一步:在App.js中定义history
第二步:在request.js中 引入import { history } from '@/App',然后