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实现返回上一页面并刷新的小例子
Dec 11 Javascript
深入理解javascript严格模式(Strict Mode)
Nov 28 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
通过js修改input、select默认字体颜色
Apr 19 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
AngularJS 控制器 controller的详解
Oct 17 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 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 中英文语言转换类代码
2011/08/11 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python 如何设置守护进程
2020/10/29 Python
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
计算机本科生自荐信
2013/10/15 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis