拦截器
请求拦截器
拦截请求,然后查询是否有token,如果有则添加到请求头(这样所有的请求就都有token),如果没有则不添加
// 添加一个请求拦截器
axios.interceptors.request.use((config) => {
// 获取localStorage中的token如果有则添加,如果没有则不添加
const token = localStorage.getItem('token')
token ? config.headers.common['Authorization'] = "Bearer " + token : null
return config
}, (err) => {
return Promise.reject(err)
})
响应拦截器
拦截响应结果,如果为401,则跳转到登录,router在axios.js不存在,需要我们手动引入
// 添加一个响应拦截器
axios.interceptors.response.use((res) => {
if (res.data.res_code === 401) {
// 跳转到登录页
router.push('/login')
}
// 对响应数据做点什么
return res;
}, (error) => {
// 对响应错误做点什么
return Promise.reject(error);
});
token哪来的
token是在登录操作中获取到的,获取到token后,将其存储在storage里供以后使用
token在使用时需要加到header,并不是所有的都需要加Bearer前缀