发表于: 2020-04-16 21:21:35
1 1818
今天完成的事情:
1.推进任务
明天计划的事情:
1.推进任务
遇到的问题和收获:
let http = Axios.create({
timeout: 3000, //超时配置 3秒
responseType: 'json', // 响应数据格式
responseEncoding: 'utf8', // 响应数据编码
});
http.interceptors.request.use(
config => {
console.log('request请求成功');
return config;
},
error => {
console.log(error);
console.log('request请求失败');
return Promise.reject();
}
);
http.interceptors.response.use(
response => {
console.log('response响应成功');
console.log(response);
let role = sessionStorage.getItem('sid')
if (response.status === 200) {
console.log('response.status为200');
// 只有在当前路由不是登录页面才跳转
if( router.currentRoute.path !== '/login' && !role){
alert('请登录后再操作!')
router.replace({
path: '/login',
query: {redirect: router.currentRoute.fullPath}
})
}
return response;
} else {
console.log(3);
Promise.reject();
}
},
error => {
console.log('response响应失败');
console.log(error);
switch (error.response.status) {
case 401:
// 返回 401 清除token信息并跳转到登录页面
// store.commit(types.LOGOUT);
window.sessionStorage.removeItem('sid')
// 只有在当前路由不是登录页面才跳转
router.currentRoute.path !== 'login' &&
router.replace({
path: 'login',
query: {redirect: router.currentRoute.fullPath}
})
}
return Promise.reject();
}
);
export default http;
用axios的interceptors拦截请求和响应。
if (response.status === 200) {
console.log('response.status为200');
// 只有在当前路由不是登录页面才跳转
if( router.currentRoute.path !== '/login' && !role){
alert('请登录后再操作!')
router.replace({
path: '/login',
query: {redirect: router.currentRoute.fullPath}
})
}
return response;
响应成功后,判断当前路由地址是否是login且是否有登录后储存的sessionStorage状态,没有的话就跳转到登录界面。
暂时使用没问题。还测试下看看
评论