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 相关文章推荐
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JQuery显示隐藏DIV的方法及代码实例
Apr 16 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
原生JS实现不断变化的标签
May 22 Javascript
将 vue 生成的 js 上传到七牛的实例
Jul 28 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 Javascript
详解swiper在vue中的应用(以3.0为例)
Sep 20 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 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&&mysql)二
2006/10/09 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
ArrayList类(增强版)
2007/04/04 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
js命名空间写法示例
2015/12/18 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
简单的js表格操作
2016/09/24 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
js实现下一页页码效果
2017/03/07 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
Python实现随机漫步功能
2018/07/09 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
会计工作心得体会
2014/01/13 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
2014年度考核工作总结
2014/12/24 职场文书
旅游项目合作意向书
2015/05/08 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书