需求:
项目运行时,依靠接口请求检查用户是否已经登录过,可做处理,我们就可以在全局的网络封装处,写一个接口的请求拦截器
import axios from "axios";
export function request(config) {
const instance = axios.create({
// 设置请求头
baseURL: 'https://api.shop.eduwork.cn',
// 设置请求时间
timeout: 5000
})
// 请求拦截
instance.interceptors.request.use(config => {
// 如果有一些接口需要认证才可以访问,就在这统一设置
// 例如登录的token
// 为请求对象,添加token验证的Authorization字段
// 当token为空时,在需要token字段的接口将不会放行,接口请求失败
config.headers.Authorization = window.sessionStorage.getItem('token');
return config;
// 直接放行
return config;
},error => {
})
// 响应拦截
instance.interceptors.response.use(res => {
return res;
},error => {
// 如果有需要授权才可以访问的接口,统一去login授权
// 如果有错误,这里面去设置处理,显示错误信息
})
return instance(config);
}
另外,我们需要在登录接口请求成功将登录信息保存至会话
login(){
// 登录成功保存token,用于身份验证
window.sessionStorage.setItem('token',res.data.data.token);
}
这样,我们就写好了一个接口需要token验证的请求拦截
另外,我们需要做页面跳转,判断是否有登录时,可以移步