Axios 请求拦截器

1. 步骤

  • form表单提交账号密码

  • 提交成功

  • validate 对整个表单的内容进行验证。 接收一个回调函数,或返回 Promise。 (callback?: (isValid: boolean, invalidFields?: ValidateFieldsError) => void) => Promise

    formRef.value.validate((valid) => {
    if (!valid) {
    console.log('验证不通过')
    return false
    }

  • cookies 存储admin-token值

  • 请求拦截器获取cookies中admin-token的值

  • 将admin-token添加给响应头中的token进行验证

2. axios.js

// cookie-token-导入-01
import { useCookies } from '@vueuse/integrations/useCookies'

// 添加请求拦截器
service.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 往header头自动添加token
    // cookie-token-定义响应式对象-02
    const cookie = useCookies()
    // cookie-token-使用get方法获取token-03
    const token =  cookie.get('admin-token')
    if(token){
        config.headers["token"] = token
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

2. login.vue

# 表单提交
const onSubmit = () => {
  formRef.value.validate((valid) => {
    if (!valid) {
      console.log('验证不通过')
      return false
    }
    // console.log("验证通过");
    login(form.username, form.password)
      // .then 请求成功
      .then((res) => {
        console.log(res)

        // 提示登陆成功
        ElNotification({
          message: '登陆成功' || '请求失败',
          type: 'success',
          duration: 3000,
        })
        // 存储token
        // cookie-token-定义响应式对象-02
        const cookie = useCookies()
        // cookie-token-使用set方法设置token-03
        cookie.set('admin-token', res.token)

        // 获取相关信息
        getinfo().then((res2)=>{
          console.log(res2);
        })
        
        // 路由跳转-跳转到后台首页-03
        router.push('/')
      })
posted @ 2023-04-10 16:11  LeoShi2020  阅读(91)  评论(0编辑  收藏  举报