Vue全局拦截所有请求并在请求头中添加token方式

 更新时间:2024年08月28日 16:21:16   作者:三七有脾气  
这篇文章主要介绍了Vue全局拦截所有请求并在请求头中添加token方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Vue全局拦截所有请求并在请求头中添加token

在实际的项目中,为了登录的安全,token是必不可少的,所以就需要前后端配合,后端生成和验证token(这方面我也写过文章,讲述后端对token的处理),前端在每一次请求中都要在请求头上加上token。

第一步:先讲一讲前端要对token做什么

首先,当我们在登录页面输入账号密码之后,点击登录,后端除了会验证账号密码是否正确,还会生成token,然后将token与登录结果一起返回。

这时候前端就需要解析后端返回的数据,取到token,放到sessionStorage中

下面就是我随便写的提交登录表单的方法

//提交表单数据
    submitForm(formName) {
      const that = this
      axios({
        method: "post",
        url: connectUrl+":10003/login/acount",
        data:{
          userName:this.ruleForm.userName,
          password:this.ruleForm.password,
          option:0,
          loginTime:new Date()
          } 
      }).then(function(response){
            if(response.data.code === 200){
              sessionStorage.setItem("token",response.data.data.token);
              sessionStorage.setItem("userName",response.data.data.userName);
            that.$router.push({
                name:'index'
                })
            that.$message.success("登录成功")
          }else{
            that.$message.error("权限不足:账号密码错误")
          }
          
      });
    }

简单来说:

将token放入sessionStorage的操作的关键代码就是这一行:

sessionStorage.setItem("token",response.data.data.token);

第二步:查看sessionStorage中是否保存了token

成功将token保存到sessionStorage后,就可以开始拦截每次请求,将token放到请求头中了

第三步:找到vue项目中的main.js文件,并引入axios

第四步:在main.js中写相关的拦截请求的代码

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 判断是否存在token,如果存在将每个页面header添加token
  if (sessionStorage.getItem("token")) {
    config.headers.common['Authorization'] = sessionStorage.getItem("token");
  }
  return config
}, function (error) {
  router.push('/login')
  return Promise.reject(error)
})

上面是请求拦截器,其实还可以对响应进行拦截(可有可无,可以不写,不影响请求拦截器的实现)

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, function (error) {
  // 对响应错误做点什么
  if (error.response) {
    switch (error.response.status) {
      case 401:
        store.commit('del_token')
        router.push('/login')
    }
  }
  return Promise.reject(error)
})

总结

好了,以上就是"Vue:全局拦截所有请求,并在请求头中添加token"的全部内容了

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue 自定义指令功能完整实例

    Vue 自定义指令功能完整实例

    这篇文章主要介绍了Vue 自定义指令功能,结合完整实例形式分析了vue.js自定义指令相关实现与使用操作技巧,需要的朋友可以参考下
    2019-09-09
  • 使用vuetify实现全局v-alert消息通知的方法

    使用vuetify实现全局v-alert消息通知的方法

    使用强大的Vuetify开发前端页面,结果发现官方没有提供简便的全局消息通知组件,所以自己动手写了一个简单的组件,接下来通过本文给大家介绍使用vuetify实现全局v-alert消息通知的详细代码,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Vue自定义指令结合阿里云OSS优化图片的实现方法

    Vue自定义指令结合阿里云OSS优化图片的实现方法

    这篇文章主要介绍了Vue自定义指令结合阿里云OSS优化图片的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 浅谈Vue的组件间传值(包括Vuex)

    浅谈Vue的组件间传值(包括Vuex)

    这篇文章主要介绍了Vue的组件间传值(包括Vuex),全文通过举例子及代码的形式进行了一个简单的介绍,希望大家能够理解并且学习到其中知识
    2021-08-08
  • vue中自定义指令directive的详细指南

    vue中自定义指令directive的详细指南

    这篇文章主要给大家介绍了关于vue中自定义指令directive的相关资料,自定义指令解决的问题或者说使用场景是对普通 DOM 元素进行底层操作,所以我们不能盲目的胡乱的使用自定义指令,需要的朋友可以参考下
    2021-09-09
  • vue观察模式浅析

    vue观察模式浅析

    这篇文章主要介绍了vue观察模式浅析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue 2源码解析ParseHTML函数HTML模板

    Vue 2源码解析ParseHTML函数HTML模板

    这篇文章主要为大家介绍了Vue 2源码解析ParseHTML函数HTML模板详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • element-ui中的select下拉列表设置默认值方法

    element-ui中的select下拉列表设置默认值方法

    今天小编就为大家分享一篇element-ui中的select下拉列表设置默认值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vite+element-plus项目基础搭建的全过程

    vite+element-plus项目基础搭建的全过程

    最近看完Vue3和Vite文档之后,就写了个小demo,整体感觉下来还是很丝滑的,下面这篇文章主要给大家介绍了关于vite+element-plus项目基础搭建的全过程,需要的朋友可以参考下
    2022-07-07
  • Vue3实现全局loading指令的示例详解

    Vue3实现全局loading指令的示例详解

    这篇文章主要介绍了Vue3实现全局loading指令,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论