Vue中axios拦截器如何单独配置token


Posted in Javascript onDecember 27, 2019

在了解到cookie、session、token的作用后学习token的使用

cookie

cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端

session

session数据保存在服务端,在内存中开辟空间存储数据,session文件名即sessionID保存在cookie内,随cookie传送到服务端后在服务端匹配session文件

token

token是服务端的一种算法,如果登录成功,服务端就会根据算法生成一个字符串,将字符串传递回客户端。这个字符串就是token,安全性最高

以上都有可能受到CSRF攻击

axios拦截器会在发送请求前先进行处理,将token放进key中保存在请求头中,这个key是前后台约定好的。这样配置好后,每次发送请求的时候,请求头都会带上token传送到后台进行校验。

axios的特点(官网)

  • 支持浏览器和node.js
  • 支持promise
  • 能拦截请求和响应
  • 能转换请求和响应数据
  • 能取消请求
  • 自动转换JSON数据
  • 浏览器端支持防止CSRF(跨站请求伪造)

方法一:我们在使用axios请求的时候可以先获取我们已经存入localStorage里的token

然后在拦截器里使用[…]进行拼接

import axios from 'axios';
import qs from 'qs';
axios.defaults.baseURL = process.env.VUE_APP_BASE_API;
let token = localStorage.getItem('token')
// Add a request interceptor
axios.interceptors.request.use(function (config) {
  // Do something before request is sent
  //console.log(config)
  if(config.method==='post'){
    config.data=qs.stringify({
      token:token,
      ...config.data
    })
  }else if(config.method==='get'){
    config.params={
      token:token,
      ...config.params
    }
  }
  return config;
 }, function (error) {
  // Do something with request error
  return Promise.reject(error);
 });

// Add a response interceptor
axios.interceptors.response.use(function (response) {
  // Do something with response data
  return response;
 }, function (error) {
  // Do something with response error
  return Promise.reject(error);
 });

 class http{
   static get(url,params){
     return axios.get(url,params)
   }
   static post(url,params){
    return axios.post(url,params)
  }
 }
 export default http;

方法二:

axios修改全局默认配置:

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

axios配置拦截器:

// 添加一个请求拦截器
axios.interceptors.request.use(function (config) {
  // Do something before request is sent
  return config;
//这里经常搭配token使用,将token值配置到tokenkey中,将tokenkey放在请求头中

config.headers['Authorization'] = token;


 }, function (error) {
  // Do something with request error
  return Promise.reject(error);
 });

// 添加一个响应拦截器
axios.interceptors.response.use(function (response) {
  // Do something with response data
  return response;
 }, function (error) {
  // Do something with response error
  return Promise.reject(error);
 });

这两种方法就可以让我们在axios拦截器里拼接token了,而不是每一个请求都需要加一个token值

总结

以上所述是小编给大家介绍的Vue中axios拦截器如何单独配置token,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
jQuery实现id模糊查询的小例子
Mar 19 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
webpack dll打包重复问题优化的解决
Oct 10 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 10 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 Javascript
JavaScript获取当前url路径过程解析
Dec 27 #Javascript
前端开发之便利店收银系统代码
Dec 27 #Javascript
JavaScript setInterval()与setTimeout()计时器
Dec 27 #Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 #Javascript
React中使用UMEditor的方法示例
Dec 27 #Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 #Javascript
JavaScript中变量提升机制示例详解
Dec 27 #Javascript
You might like
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php木马攻击防御之道
2008/03/24 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
Node.js事件驱动
2015/06/18 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
客户经理岗位职责
2013/12/08 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
干部鉴定材料
2014/05/18 职场文书
老公保证书
2015/01/17 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
社团招新宣传语
2015/07/13 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL