Vue3---请求拦截器携带token

为什么要在请求拦截器携带Token?

Token作为用户标识,在很多个接口中都需要携带Token才可以正确获取数据,所以需要在接口调用时携带Token。另外,为了统一控制采取请求拦截器携带的方案

如何配置?

Axios请求拦截器可以在接口正式发起之前对请求参数做一些事情,通常Token数据会被注入到请求header中,格式按 照后端要求的格式进行拼接处理
//axios基础封装
import axios from "axios";
import {ElMessage} from "element-plus";
import {useUserStore} from "@/stores/user";

 const httpInstance = axios.create({
     baseURL:'https://pcapi-xiaotuxian-front-devtest.itheima.net',  // 基地址
     timeout:5000    // 超时器
 })

// axios.create()方法可以执行多次,每次执行就会生成一个新的实例
// const httpInstance2 = axios.create({
//     baseURL:'url2',  // 基地址
//     timeout:5000    // 超时器
// })

//拦截器
httpInstance.interceptors.request.use(config=>{

    // 1. 从Pinia获取token数据
    const userStore =useUserStore()
    // 2. 按照后端的要求拼接token数据
    const token = userStore.userInfo.token
    if(token){
        config.headers.Authorization = `Bearer ${token}`
    }

    return config
},e=>Promise.reject(e))

//响应器
httpInstance.interceptors.response.use(res=> res.data,e=>{
    // 统一错误提示
    ElMessage({
        type:'warning',
        message:e.response.data.message
    })
    return Promise.reject(e)
})

export default httpInstance

你可能感兴趣的:(javascript,前端,vue.js)