Token是一个身份令牌。在发请求的时候,要携带到请求头中。
Token从哪里来? 登录成功来
/ 点击登录按钮
submitForm() {
// ui框架自带的方法 validate((valid)=>{ valid就是验证结果 });
this.$refs.loginForm.validate(async (valid) => {
if (valid) {
// 调用api函数
let res = await login_api({
account: this.loginForm.acc,
password: this.loginForm.pwd,
})
console.log(res.data)
let { code, role, token } = res.data
// 判断一下 code
if (code == 0) {
this.$router.push('/layout')
// 把token存入本地
local.set('tk', token)
}
} else {
return
}
})
},
为什么要把token设置在请求头中??
因为你不携带,接口就会报错 ==== ‘无效token’
在请求拦截器中 携带token
响应拦截器??有什么作用??
统一处理弹窗
// 请求 拦截器 携带请求头 token
axios.interceptors.request.use((config) => {
// 取出本地存储
let tk = local.get('tk')
if (tk) {
// 如果token在本地存储还在,就携带在请求头中
config.headers.Authorization = tk;
}
// console.log("请求拦截器----------------",config);
return config;
}, (error) => {
// 失败回调
return Promise.reject(error);
});
// 引入element-ui的方式 Message === this.$message
import { Message } from 'element-ui';
// 引入local工具
import local from '@/utils/local';
// 响应 拦截器
axios.interceptors.response.use((response) => {
// console.log("响应拦截器=------------------", response.data)
let { code, msg } = response.data;
// 判断 如果msg存在 才走弹窗 否则不走弹窗 列表接口没有msg和code2个参数
if ( msg ) {
if (code == 0) {
// 成功弹窗
Message({
type: "success",
message: msg
})
} else {
// 错误弹窗
Message.error(msg);
}
}
return response;
}, (error) => {
// console.log("响应失败回调--------------",error);
// 失败回调
return Promise.reject(error);
});