获取token
// 获取token
login () {
if (this.form.username == "" || this.form.password == "") {
this.$message.warning("账号密码不能为空")
} else {
this.axios.post("/oauth/token", { {
username: this.form.username,
password: this.form.password
} }
).then(res => {
if (res.status == "200" || res.status == 200) {
sessionStorage.setItem('tokenId', res.data.access_token);
this.$router.push({ path: "/" });
}
}).catch(error => {
console.log(error)
})
}
},
将token带入请求头中
//将token带入请求头中
axios.interceptors.request.use(function(config) {
let token = sessionStorage.getItem('tokenId')
if (token) {
config.headers['Authorization'] = 'Bearer' + token
}
return config
}, function(error) {
return Promise.reject(error)
})
响应拦截器
axios.interceptors.response.use(function(response) { // ①10010 token过期(30天) ②10011 token无效
// console.log(response)
if (response.status == 200) {
if (response.data.resultHint == "不允许访问") {
Vue.prototype.$message.error('无权限操作,请联系管理员')
}
}
return response
}, function(error) { //登录失败异常
console.log(error)
if (error.request) {
if (error.request.status == 401) {
Vue.prototype.$message.error('未授权,请重新登录')
router.replace({
path: '/login' // 到登录页重新获取token
})
} else if (error.request.status == 400) {
Vue.prototype.$message.error('用户名或密码错误')
}
} else if (error.response) {
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
}
return Promise.reject(error)
})