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 相关文章推荐
JavaScript 注册事件代码
Jan 27 Javascript
js单向链表的具体实现实例
Jun 21 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
微信小程序 JS动态修改样式的实现代码
Feb 10 Javascript
vue动态组件实现选项卡切换效果
Mar 08 Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
Redux实现组合计数器的示例代码
Jul 04 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
手写实现JS中的new
Nov 07 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 在线打包_支持子目录
2008/06/28 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
基于php权限分配的实现代码
2013/04/28 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
3种php生成唯一id的方法
2015/11/23 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
php微信公众号开发之简答题
2018/10/20 PHP
jquery ui resizable bug解决方法
2010/10/26 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
python解决网站的反爬虫策略总结
2016/10/26 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
大专毕业生自我评价分享
2013/11/10 职场文书
高中自我评价分享
2013/12/05 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS