//登录成功后,存储token信息
// 登录接口
loginApi(loginForm) {
this.axios.post(api.login, {
loginName: loginForm.loginName,
password: loginForm.password
}).then(res => {
if(res.status === 200) {
if(!res.data.success) {
this.confirm.popShow = true;
this.confirm.popType = 'fail';
this.confirm.popTitle = '登录失败';
this.confirm.popTips = res.data.msg;
} else {
// localStorage存储X_token
window.localStorage.setItem("token", res.headers['x-token']);
this.$router.push('/Admin');
}
}
});
}
main.js文件中,或者request.js文件中
import axios from 'axios';
import router from './router';
let noTokenUrl = ["/api/user/login","/user/login"] //无需添加token的接口
//接口请求,请求拦截器,每次请求(非登录接口)前判断本地是否有token,如有添加token请求头
axios.interceptors.request.use(function (config) {
const tokenStr = localStorage.getItem('token')
// console.log('请求拦截器---',config)
if (tokenStr) { // 如果本地有token,给它加上请求头
if(!noTokenUrl.includes(config.url)){
config.headers['x-token'] = tokenStr
}
}
return config
}, function (error) {
return Promise.reject(error)
})
//响应拦截器。如果状态码是401则跳转到登录页面
axios.interceptors.response.use(function (response) {
// console.log('响应拦截器', response)
return response
},function(err){
console.dir(err)
if(err.response.status === 401){
// 401
router.push('/')
}else{
return Promise.reject(err)
}
})
request请求添加token请求头
最新推荐文章于 2024-05-18 21:57:13 发布