axios配置及使用(发起请求时带上token)

深入了解 Bearer 模式 Bearer 模式是 OAuth 2.0 标准定义的一种令牌认证方式。谁拥有这个令牌,就可以凭借它访问受保护的资源。它通常用于在无状态 HTTP 请求中传递用户身份或授权信息。Bearer Token 的认证信息一般通过 HTTP 请求头的Bearer是固定的前缀,用于标识认证类型。<token>是具体的令牌(例如 JWT)。Bearer Token 是一种灵活且广泛应用的认证方式,它通过 OAuth 2.0 标准化了令牌的传递方式,简化了身份验证的实现。始终使用 HTTPS 保护令牌传输。 阅读详情
AI摘要

本文详细介绍了Token认证的工作原理及在前端应用中的实现步骤,包括如何在登录时获取并存储Token,如何在请求中携带Token,以及如何处理Token验证错误。

token是相对会叫安全的使用暗码形式的数据传输,由后台产生,并且传输到前台,前台可以将保存,在前台每次发送请求的时候可以携带token,后台可以对token进行验证,通过验证的通过请求可以对数据进行正确的回复,否则就睡返回错误的回执码

token有自己的过期时限,并且是在后台实现,前台虚无考虑那么多,具体前台的步骤分为三部

1.在登陆的时候后台会给一个token码,前台将其存储在cookie,localstroage或者localsession中即可

请注意需要在tooken的前边拼接字符串’Bearer '+,固定格式

login(){
            axios.post('/user/login',this.user).then((res)=>{
                localStorage.setItem('token',"Bearer "+res.data.res.token)
            })
        }

2.在router中设置守卫导航

判断token是否存在,如果存在将携带token进行下一簇的操作,如果不存在,则返回登陆

router.beforeEach((to,from,next)=>{
    if(to.matched.some((route)=>route.meta.Auth)){
        if(localStorage.getItem('token')){
            next()
        }else{
             next({
                path:'/login',
                query:{
                    returnURL:to.path
                }
            })
        }
       
    }else{
         next()
    }
   
})

3.在axios的请求拦截器中携带tooken进行请求

axios.interceptors.request.use(config=>{
    const token=localStorage.getItem('token')
    // if(token){
        token?config.headers.Authorization=token:null;

    // }
    return config
});

每次请求时都会携带token,后台验证不验证token就是后台的问题了

设置token的回复拦截器,对回执码错误的进行操作处理

axios.interceptors.response.use(res=>{
    if(res.data.res_code=== 401){
        router.replace('/login');
        localStorage.removeItem('token')
    }
    return res
})

这个根据后台的回执码自行更改就行

=====================================================================================================================================================

1.安装

利用npm安装

npm install axios --save
2.引入即可使用

import axios from 'axios'
3.目录

4.各个文件设置:

(1)env.js

export default {
  // 接口地址
  baseURL: 'http://localhost:8090/scheduleweb/',
  isDev: true
}

(2)index.js

备注:road.js定义了一个新的Vue对象,目的是调用elementUI的提示信息($message,比如当服务器连接失败时,提示“服务器连接失败”),不需要用到的可移除相关配置

import Env from './env';
import axios from 'axios'
import {road} from '../road.js'
import routerIndex from '../router/index'


let token = '';

axios.defaults.withCredentials = false;
axios.defaults.headers.common['token'] = token;
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';//配置请求头

//添加一个请求拦截器
axios.interceptors.request.use(function (config) {
  let user = JSON.parse(window.sessionStorage.getItem('access-user'));
  if (user) {
    token = user.token;
  }
  config.headers.common['token'] = token;
  //console.dir(config);
  return config;
}, function (error) {
  // Do something with request error
  console.info("error: ");
  console.info(error);
  return Promise.reject(error);
});

// 添加一个响应拦截器
axios.interceptors.response.use(function (response) {
  if (response.data && response.data.code) {
    if (parseInt(response.data.code) === 108 || parseInt(response.data.code) === 109 || response.data.msg === 'TOKEN失效,请重新登录' || response.data.msg === 'TOKEN不存在') {
      //未登录
      response.data.msg = "登录信息已失效,请重新登录";
      road.$message.error(response.data.msg);
      routerIndex.push('/login');
    }
    if (parseInt(response.data.code) === -1) {
      road.$message.error("请求失败");
    }
  }
  return response;
}, function (error) {
  // Do something with response error
  console.dir(error);
  road.$message.error("服务器连接失败");
  return Promise.reject(error);
})

//基地址
let base = Env.baseURL;

//测试使用
export const ISDEV = Env.isDev;

//通用方法

export const POST = (url, params) => {
  const getTimestamp = new Date().getTime();
  return axios.post(`${base}${url}?timer=${getTimestamp}`, params).then(res => res.data)
}
export const GET = (url, params) => {
  const getTimestamp = new Date().getTime();
  return axios.get(`${base}${url}?timer=${getTimestamp}`, {params: params}).then(res => res.data)
}

export const PUT = (url, params) => {
  return axios.put(`${base}${url}`, params).then(res => res.data)
}

export const DELETE = (url, params) => {
  return axios.delete(`${base}${url}`, {params: params}).then(res => res.data)
}

export const PATCH = (url, params) => {
  return axios.patch(`${base}${url}`, params).then(res => res.data)
}

(3)api_user.js

     该文件具体展示调用方法 

import * as API from './'

export default {
  //验证手机号是否已注册
  isExistUser: params => {
    return API.GET('login/isExistUser', params);
  },
  //注册
  register: params => {
    return API.POST('login/userRegister', params)
  },
  //密码登录
  login: params => {
    return API.POST('login/userLogin', params)
  }
}
 
5.在组件中调用

import API from '../api/api_user'
import md5 from 'js-md5'

export default {
  data() {
    return {
      loading: false
    }
  },
  methods: {
    login() { // 登录
      let that = this;
      that.loading = true; // 按钮点击后设置loading
      let params = { // 参数
        userName: "user1",
        pwd: md5("123456"),
        type: 3
      }
      // 调用接口
      API.login(params).then(function (res) {
        if (res.code === 0) {
          let userInfo = {
            id: res.data.user.id,
            mobilePhone: res.data.user.mobilePhone,
            nickname: res.data.user.userName,
            gender: res.data.user.gender,
            photo: res.data.user.photo,
            token: res.data.token,
            timestamp: new Date().getTime()
          };
          localStorage.setItem('access-user', JSON.stringify(userInfo)); // 将用户信息存到localStorage中
          that.$router.replace({path: '/'}); // 登录成功跳转
        } else {
          that.loading = false;
          that.$message.error(res.msg);// elementUI消息提示
        }
      });

    }
  }
}
vuecli3使用axios发送请求到后端获取token详解 1.安装axios $ npm install axios $ npm install vue-axios 2.在mian.js中添加如下代码 import axios from 'axios' import VueAxios from 'vue-axios' import Qs from 'qs' Vue.use(VueAxios,axios,Qs) 3.在创建好的vuecli3项目的根... 阅读详情

相关推荐

uniapp使用axios请求并封装无验证权限时重试

在uniapp中,使用axios进行请求时,uniapp无法使用axios的适配器,需要基于uni.request来定义适配器。 安装完成axios后在项目utils目录下建一个axios文件夹 文中根目录代表utils中的axios文件夹 在根目录新建一个axios.js文件,在该文件中配置一个新的axios import axios from "axios"; const service = axios.create({ withCredentials: true, crossDomain:

m0_51095760的博客 1578

axios封装请求拦截器中给Authorization,添加token加Bearer。

instance.interceptors.request.use(function (config) { let token = sessionStorage.getItem(‘token’)//获取token let token_type = sessionStorage.getItem(‘token_type’) //获取存储在本地的后端返回参数 if (token) { // 添加headers config.headers.Authorization =token_type+ ’ '+ token

Li8L9xF的博客 5577

Axios GET请求中的Bearer Token传递问题解析

本文分析了Axios中GET请求无法传递Bearer Token的问题,指出常见错误是将数据对象错误地放在第二个参数位置。正确的GET请求应将配置对象紧跟URL,数据通过查询参数传递。文章提供了正确调用示例,并强调理解不同HTTP方法的参数传递方式是关键。通过调整GET请求的参数顺序,可以确保Bearer Token被正确传递到请求头中。

m0_74337424的博客 232

前端携带Bearer Token

在前端使用 axios 发送请求时,可以通过设置请求头来携带 Bearer Token。Bearer Token 是一种常用的身份验证方式,它通常用于 OAuth2 授权流程中。 要在 axios 中携带 Bearer Token,可以通过设置 `Authorization` 请求头来实现。

Bunny的博客 2474

台达伺服B3驱动器参数的设定和CN1的接法

3. B2的电子齿轮比是直接设定P1-44(分子)和P1-45(分母)就就可以的,但是B3的有个隐藏的细节,就是P1-44的默认值77216不用去更改,这是官方客服说的,需要改的是P1-45这个参数,比如说,我使用的丝杆螺距是5mm的,那么就是以5000脉冲走完5mm为一圈,则就把P1-45设定为5000即可;我的是三菱FX3S系列的PLC,是NPN型的,输出点是24V-作为信号的,所以接41、37,具体可参考B3的。,跟着客服的讲解操作才解决的,以下就是解决方法,希望能够帮到需要的各位。

qq_38681017的博客 1万+

JavaScript性能优化:全链路性能优化策略

JavaScript性能优化是提升Web应用质量的核心要素,直接影响用户体验与业务成果。研究表明,页面加载延迟1秒可能导致转化率下降7%。高效的JavaScript执行能减少主线程阻塞,避免动画卡顿或操作延迟,尤其在移动端低性能设备上更为关键。优化内存管理与减少冗余计算可降低浏览器资源消耗,防止因内存泄漏导致的崩溃,提升应用稳定性。在竞争激烈的互联网环境中,性能优势已成为产品差异化的关键因素,直接影响用户留存与商业价值。因此,性能优化应作为开发全周期的核心实践,而非事后补救措施。

weixin_49707375的博客 1272

java bearer token,传递access_token参数的正确方式

在OAuth中, access_token参数的传递如何才能更安全呢? 不知你有没有具体去研究过, 在此总结传递access_token的正确方式,(所谓正确方式是指传递方式更安全, 更隐匿, 更不容易被网络拦截,网络攻击的方式)1. 通过Header传递 access_token; [推荐]在请求URL的Header中, 添加header ->Authorization: bearer ...

weixin_39929153的博客 4124

数学建模小白必看:层次分析法(AHP)从入门到实战(附Python代码)

本文详细介绍了层次分析法(AHP)在数学建模竞赛中的应用,从构建判断矩阵到一致性检验,再到权重计算和实战案例。通过Python代码实现,帮助小白快速掌握AHP的核心技巧,解决评价类难题,提升建模效率。

web39explorer的博客 918

axios配置及使用(发起请求时带上token

1.安装 利用npm安装 npm install axios --save 2.引入即可使用 import axios from 'axios' 3.目录 4.各个文件设置: (1)env.js export default { // 接口地址 baseURL: 'http://localhost:8090/scheduleweb/'...

weixin_30609287的博客 309

【用unity实现100个游戏之7】实现一个类《杀戮尖塔》的卡牌回合制游戏(附项目源码)

【用unity实现100个游戏之7】实现一个类《杀戮尖塔》的卡牌回合制游戏(附项目源码)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

【软考高级架构】案例题考前突击6——大数据架构

前一类的数据主要由流量方以接口的方式提供(比如对接的腾讯广点通平台),后一类则是某网特有的数据,通过买家的浏览、下单、付款日志算出来。1. 在数据层面只维护一张包含所有指标的MySQL表,表中的stday字段作为索引,stday=当天的保存实时数据,stday<当天的保存离线数据。典型的大数据架构,除了Lambda架构之外,还有kappa架构,这两个架构的区别如下标所示,请补充表中空(1)-(4)第二,实时数据只对接了内部的kafka消息,没有实时的获取第三方的曝光、点击、浏览数据。

qq837993702的博客 67

axios设置token到请求头

文章目录一、问什么要设置请求头到token?二、用法成功如下图三、总结 一、问什么要设置请求头到token? 当输入用户名及密码,登录成功后,后台会返回一个token,在之后发送的请求都要带上这个token,因为后台设置了拦截,如果token一致,则允许访问,否则请求不成功。 二、用法 加一个http request拦截器 通过window.localStorage.getItem("acc...

Dream_Lee的博客 6万+

AI原生应用中的数据治理:从采集到应用的完整方案

当AI从"辅助工具"进化为"应用核心"(如ChatGPT、智能驾驶系统),传统数据管理方式已无法满足需求:模型需要更精准的训练数据、业务需要更实时的决策支持、法规需要更严格的隐私保护。本文聚焦AI原生应用的数据全生命周期治理(从采集→清洗→标注→存储→应用→归档的完整链路),覆盖技术方案、工具选择和实践要点。本文将按"场景引入→核心概念→技术方案→实战案例→未来趋势"的逻辑展开,重点通过"奶茶店原料管理"类比,解释数据治理的关键环节;结合Python代码演示核心技术(如异常值检测、主动学习标注);

SuperAGI2025 883

给axios的请求拦截器中配置token

axios 1. 配置token 用户第一次登录系统时,服务器端会返回一个身份秘钥信息(token),表明当前用户有资格、权限访问服务器,客户端获取token之后,通过sessionStorage存储在浏览器中,后续再向服务器发送请求时,需要携带token,用以表明身份。 给axios请求拦截器中配置token 在axios的请求拦截器中配置token: // 请求拦截器 axios.interceptors.request.use(function (config) { // 发送请求的相关

jyn15159的博客 1万+

高通蓝牙学习-- 关于Android 蓝牙的介绍

本文详细介绍了AOSP蓝牙架构及高通QCA芯片的蓝牙功能实现方案。主要内容包括:1)AOSP蓝牙架构在不同Android版本中的层次结构,重点分析BTHIDL层和libbt-vendor关键组件;2)QCA芯片的引导流程说明;3)两种获取libbt-vendor源码的方式(Google官方源和国内镜像源);4)针对QCA6595/6696/66x8/67x7芯片的具体实现方案,包括固件文件定义、厂商事件处理和补丁下载流程;5)蓝牙调试方法,包括logcat日志分析、HSU和Ellisys硬件跟踪技术。文章为

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 495

苹果生态最佳搭档:Mac mini + OpenClaw + iPhone 远程控制

本文详细介绍如何通过iPhone远程控制Mac mini上的OpenClaw应用,打造高效苹果生态工作流。内容包括:1) 苹果生态整合优势,包括AirDrop、Handoff等功能对比;2) Mac mini配置步骤,涵盖SSH/VNC设置、网络优化及Docker部署OpenClaw;3) iPhone端SSH/VNC客户端选择与Tailscale内网穿透配置;4) 详细SSH密钥设置与连接测试方法。通过这套方案,用户可实现跨设备无缝控制OpenClaw应用,提升远程工作效率。(149字)

一键难忘的博客 793

ios 请求头设置token_axios中为所有请求带上Token头

开发环境:vue-cli主要插件:axios应用场景:每次请求接口时,需要在headers添加对应的Token验证探索过程如下:在main.js中引入axios,主动请求一次签发Token的接口并设置到axios的默认headers中,以此达到后续的axios请求都带上Token头,如下:import axios from 'axios'axios.post('signToken', {"Nick...

weixin_33416697的博客 1247

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Vue项目中配置全局axios信息。并使用axios发起请求携带token信息,后端Filter配置拦截器并处理请求头token信息

首先在Vue项目中配置全局axios信息,在src下新建axios文件夹,里边建一个index.js文件在main.js文件里边配置全局使用:在项目中使用配置好的axios,使用this.$axios来调用,全局配置好的信息不用再去配置,如果要重新配置,可以导入没配置的axios去使用,使用方式:导入源axios,正常使用:这样请求时就会在请求头上加上token信息。

2301_78755150的博客 1722

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

axios请求中添加token,Authorization中添加token

axios请求中添加token,Authorization中添加token axios请求中添加token,应在header中添加的token,使用Authorization属性字段,如下代码 export function downLoadZip(str, filename) { axios({ method: 'get', url: url, responseT...

肖帅的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在 Vue 2 中使用 Axios 发起 POST 和 GET 请求

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js,它提供了一种非常方便的方式来发送异步 HTTP 请求。在 Vue 2 应用中,Axios 可以帮助我们轻松地与后端 API 进行通信。本文将介绍如何在 Vue 2 项目中引入 Axios,并使用它来发起 POST 和 GET 请求。

qq_44977477的博客 2419

Vue中使用axios拦截器 axios拦截器如何单独配置token

Vue中使用axios拦截器 axios拦截器如何单独配置token 在了解到cookie、session、token的作用后学习token的使用 cookie cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session session数据保存在服务端,在内存中开辟空间存储数据,session文件名即sessionID保存在cooki...

就是不减肥 2331

axios请求失败重新发起请求_axios请求失败自动重发

在做Vue、React项目的时候常会用axios请求库来与后端进行数据交互。我们通常采用一个用户凭证token来验证用户身份,服务器根据token进行判断当前用户是否有权限调用接口。经常遇到的一个问题是,调用接口时token可能已经过期,此时调用接口会失败,需要重新登录后再调用接口。通常我们可能处理为,用户走完登录流程后再重新手动触发一次请求。这样的实现本身没什么问题,但是给用户的操作体验上有被中...

weixin_39908263的博客 2010

axios如何利用promise无痛刷新token

/ 从localStorage中获取token// 给实例添加一个setToken方法,用于登录后将最新token动态添加到header,同时将token保存在localStorage中// instance是当前request.js中已创建的axios实例// 创建一个axios实例headers: {'X-Token': getLocalToken() // headers塞token})// 是否正在刷新的标记// 重试队列,每一项将是一个待执行的函数形式if (!

每天都要努力学习哦~~ 2019

axios携带token跨域请求

前端在axios中配置请求头 axios.defaults.headers.common['token'] = 'xxxxxxx'; token模式 response.setHeader("Access-Control-Allow-Origin","*"); response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,...

lihefei_coder的博客 5042

已经登录,停留很长时间,token已经过期,发起一个axios请求,如何处理

Axios 拦截器:通过请求和响应拦截器可以处理 token 的自动注入以及过期 token 的情况。重定向或刷新 token:在检测到 token 过期时,可以选择重定向用户到登录页面,或者尝试使用 refresh token 刷新 token 并重试原始请求。保持代码整洁:将 Axios 的逻辑封装到单独的文件中,使得你的组件更为简洁。这样可以有效地管理 token 的生命周期,提供更好的用户体验。

qq_50671621的博客 482
上一篇: Vue3新特性
下一篇: 封装axios,带请求头和响应头
大大黄、
博客等级 码龄8年 22粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值