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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
javascript[js]获取url参数的代码
Oct 17 Javascript
新老版本juqery获取radio对象的方法
Mar 01 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
jQuery实现冻结表头的方法
Mar 09 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
AngularJS控制器之间的数据共享及通信详解
Aug 01 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
解决Layui中templet中a的onclick参数传递的问题
Sep 20 Javascript
JavaScript中变量提升和函数提升的详解
Aug 07 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
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
python实现控制COM口的示例
2019/07/03 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
幼儿园实习自我鉴定
2013/12/15 职场文书
五一服装活动方案
2014/01/11 职场文书
教师校本培训方案
2014/02/26 职场文书
师德师风演讲稿
2014/05/05 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
OpenCV实现普通阈值
2021/11/17 Java/Android
vue封装数字翻牌器
2022/04/20 Vue.js