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 相关文章推荐
jquery实现控制表格行高亮实例
Jun 05 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
用html+css+js实现的一个简单的图片切换特效
May 28 Javascript
Jquery 实现弹出层插件
Jan 28 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
Javascript中常用类型的格式化方法小结
Dec 26 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
在vue项目中使用md5加密的方法
Sep 14 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 Javascript
vue.js 2.0实现简单分页效果
Jul 29 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
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_Flame(Version:Progress)的原代码
2006/10/09 PHP
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
平面设计的岗位职责
2013/11/08 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
房地产项目合作意向书
2015/05/08 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python