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中的startWith和endWith的几种实现方法
May 07 Javascript
js用typeof方法判断undefined类型
Jul 15 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
vue首次渲染全过程
Apr 21 Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 Vue.js
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 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
CI框架表单验证实例详解
2016/11/21 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
js 替换
2008/02/19 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
原生js开发的日历插件
2017/02/04 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python实现读取并显示图片的两种方法
2017/01/13 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
新手学python应该下哪个版本
2020/06/11 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
Europcar比利时:租车
2019/08/26 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
英语系本科生求职信范文
2013/12/18 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
生日邀请函范文
2014/01/13 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
闪闪的红星观后感
2015/06/08 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript