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 Replace 全部替换字符的用法小结
Dec 24 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 Javascript
JS异步执行结果获取的3种解决方式
Feb 19 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
Nov 01 Javascript
小程序实现录音上传功能
Nov 22 Javascript
详解vue v-model
Aug 31 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木马webshell扫描器代码
2012/01/25 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Django中间件实现拦截器的方法
2018/06/01 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
python圣诞树编写实例详解
2020/02/13 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
大学旷课检讨书
2014/01/28 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
工会换届选举方案
2014/05/21 职场文书
刑事代理授权委托书
2014/09/17 职场文书
初中数学教学反思范文
2016/02/17 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书