环境
Vue 3 + TS
http.ts
在http.ts中实现拦截,如果后台返回没权限信息,就跳转到登录页面
//响应拦截
axios.interceptors.response.use((response: AxiosResponse<any, any>) => {
endLoading();
console.log("返回值打印开始----------")
console.log(JSON.stringify(response))
console.log("返回值打印结束----------")
if (response.data.code != 200) {
ElNotification({
title: 'Error',
message: response.data.message,
type: 'error',
})
}
return response;
}, error => {
//错误提醒
endLoading();
//todo :完成没有权限就跳转到登录页
if (error.response) {
console.log("status:" + error.response.status)
switch (error.response.status) {
case 401:
//完善登录跳转
alert("身份认证失败~")
// @ts-ignore 入如果没有权限就在这跳转到登录页
router.push({
//传递参数使用query的话,指定path或者name都行,但使用params的话,只能使用name指定
path: '/login',
query: {
auth: "0"
}
}
);
break;
default:
alert("未知错误~")
}
}
return Promise.reject(error);
}
登录页面登陆成功之后
proxy.$axios.post(userLoginApi, props.loginUser)
.then((res: Result) => {
//发送成功
if (res.data.code == 200) {
saveStorage(res);
proxy.$message({
message: res.data.message,
type: "success"
});
//在这里判断一下,是不是刚刚传过来的字段
if (route.query.auth=="0"){
router.go(-1);
}
} else {
proxy.$message({
message: res.data.message,
type: "error"
});
}
版权声明:本文为weixin_43505211原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。