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中子元素和后代元素的区别示例介绍
Apr 02 Javascript
jquery xMarquee实现文字水平无缝滚动效果
Apr 29 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
jQuery插件实现图片轮播特效
Jun 16 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 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开发中常用的8个小技巧
2008/08/27 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
深入apache host的配置详解
2013/06/09 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
pytorch 共享参数的示例
2019/08/17 Python
pytorch之添加BN的实现
2020/01/06 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
给国外客户的邀请函
2014/01/30 职场文书
超市开店计划书
2014/04/26 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
个人催款函范文
2015/06/24 职场文书
关于远足的感想
2015/08/10 职场文书
python for循环赋值问题
2021/06/03 Python
分享3个非常实用的 Python 模块
2022/03/03 Python