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 相关文章推荐
Javascript 面向对象 对象(Object)
May 13 Javascript
浅谈javascript中的闭包
May 13 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
Aug 24 Javascript
JS利用cookies设置每隔24小时弹出框
Apr 20 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
详解如何为你的angular app构建一个第三方库
Dec 07 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JavaScript实现HTML导航栏下拉菜单
Nov 25 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
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
js实现简单扫雷
2020/11/27 Javascript
python编写暴力破解FTP密码小工具
2014/11/19 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
Python2与Python3的区别点整理
2019/12/12 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
机关财务管理制度
2014/01/17 职场文书
个性发展自我评价
2014/02/11 职场文书
社区食品安全实施方案
2014/03/28 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
委托公证书格式
2015/01/26 职场文书
民事调解书范文
2015/05/20 职场文书
答谢酒会主持词
2015/07/02 职场文书
Python编写nmap扫描工具
2021/07/21 Python
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android