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查找父节点的简单方法
Jun 28 Javascript
传智播客学习之java 反射
Nov 22 Javascript
javascript动画浅析
Aug 30 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
vue+iview+less+echarts实战项目总结
Feb 22 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
jQuery实现放大镜案例
Oct 19 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
星际原理概述
2020/03/04 星际争霸
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
浅谈php冒泡排序
2014/12/30 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python判断字符串与大小写转换
2015/06/08 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
python实现猜拳游戏
2020/03/04 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
专升本个人自我评价
2013/12/22 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
教师评语大全
2014/04/28 职场文书
关爱残疾人标语
2014/06/25 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书