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实现的分页函数
Dec 22 Javascript
传智播客学习之java 反射
Nov 22 Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 Javascript
jQuery遍历节点树方法分析
Sep 08 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
vue移动UI框架滑动加载数据的方法
Mar 12 Javascript
js中的 || 与 && 运算符详解
May 24 Javascript
vue单页应用的内存泄露定位和修复问题小结
Aug 02 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
vue-cli设置css不生效的解决方法
Feb 07 Javascript
在js中修改html body的样式
Nov 11 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
深入理解PHP中的global
2014/08/19 PHP
php输出xml属性的方法
2015/03/19 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
javascript获取dom的下一个节点方法
2014/09/05 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
Python解释执行原理分析
2014/08/22 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python for 循环获取index索引的方法
2019/02/01 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Python和Sublime整合过程图示
2019/12/25 Python
python的sys.path模块路径添加方式
2020/03/09 Python
python 批量将中文名转换为拼音
2021/02/07 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
应付会计岗位职责
2013/12/12 职场文书
机电专业个人求职信范文
2013/12/30 职场文书
诚信承诺书范文
2014/03/27 职场文书
出国留学计划书
2014/04/27 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
团组织推优材料
2014/12/29 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript