首页 > 其他分享 >axios实现无感刷新token

axios实现无感刷新token

时间:2023-04-14 09:34:47浏览次数:32  
标签:axios return isRefreshing response token config 无感

let isRefreshing = false  标识当前正在刷新token

// 重试队列,每一项将是一个待执行的函数形式
let requests = []

axios.interceptors.response.use(response => {
  const { code } = response.data
  if (code === 401) { // 具体code看和后端定义的是什么,这里是401
    const config = response.config
    if (!isRefreshing) {
      isRefreshing = true
      const params = new URLSearchParams()
      params.append('refreshToken', refresh_token)
    return refreshToken(params).then(res => { if (如果接口没有正常返回token,那么调用退出到登录页面) { logout() } else {
      /*
        在这可以把新token存到store或者localStorage里面,具体的看自己存在哪
      */ config.headers['Authorization'] = 'Bearer ' + token requests.forEach(cb => cb(token)) requests = []return axios(config) } }).catch(res => {
      如果服务端异常,那么在这也是退出到登录页面 }).finally(() => { isRefreshing = false }) } else { // 正在刷新token,将返回一个未执行resolve的promise return new Promise((resolve) => { // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行 requests.push((token) => { config.headers['Authorization'] = 'Bearer ' + token resolve(axios(config)) }) }) } } return response }, error => { return Promise.reject() })

 

标签:axios,return,isRefreshing,response,token,config,无感
From: https://www.cnblogs.com/maomao93/p/17317282.html

相关文章

  • JSON Web Tokens (JWT) — the only explanation you will ever need
    本文摘抄自ArielWeinberger博客  JSONWebTokens(JWT)—theonlyexplanationyouwilleverneed|byArielWeinberger|Medium JSONWebTokens(JWT)—theonlyexplanationyouwilleverneedJSONWebTokensarechangingtheworldf......
  • 前端_发起axios请求,前端无法获取response的全部header
    问题描述使用vueaxios向python+flask搭建的服务端发起请求,请求成功后,前端无法拿到服务端添加到header中的token。问题原因前后端分离,默认reponseheader只能取到以下信息Content-LanguageContent-TypeExpiresLast-ModifiedPragma解决方法要获取其他的headers信息......
  • Axios异步框架
    Axios快速入门1.引入axios的js文件<scriptsrc="js/axios-0.18.0.js"></script>2.使用axio发送请求,并响应结果get:axios({method:"get",url:"http://localhost:8080/science/axiosServlet?username=zhangsan"}).then(function(resp){......
  • Kubernetes客户端认证(二)—— 基于ServiceAccount的JWTToken认证
    1、概述在Kubernetes官方手册中给出了“用户”的概念,Kubernetes集群中存在的用户包括“普通用户”与“ServiceAccount”,但是Kubernetes没有普通用户的管理方式,通常只是将使用集群根证书签署的有效证书的用户都被视为合法用户。那么对于使得Kubernetes集群......
  • Axios是什么?Axios的名字的由来?
    axios是什么?他的名字的由来?Axios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js环境。它有助于发出XMLHttpRequests(发出HTTP请求),可以处理跨域请求。 Axios的名字来源于希腊神话中的英雄Axios,他是一个勇敢的冒险家,有着强大的力量和知识,他可以改变任何事物,使它们更加强大......
  • vueuse cookie token使用
    <template><h1>后台首页</h1><el-button@click="set">设置</el-button><el-button@click="get">读取</el-button><el-button@click="remove">删除</el-button></template>......
  • axios写了前端,如何从后台获取到List列表数据(涉及到JSON)
    问题描述我将前端写完之后,一直没有理解axios后台的写法,导致进度一直拖慢,这里我就来叙述一下我后来是怎么写出后台代码的吧,或者说,这样的后台代码是怎么写出来的!问题解决经过友友的点拨,这里就需要将我们的list数据转换成json数据;然后将转换好的json数据传到axios写出来的html页......
  • 看到这个案例,突然醒悟axios的使用方法
    案例--点击按钮改变文本内容源代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>测试界面</title></head><body><divid="app"><p>{{message}}</p......
  • 【开源免费】ChatGPT-Java版SDK重磅更新至1.0.10版,支持Tokens计算,快来一键接入。
    简介ChatGPTJava版SDK开源地址:https://github.com/Grt1228/chatgpt-java,目前收获将近1000个star。有bug欢迎朋友们指出,互相学习,所有咨询全部免费。最新版:1.0.10<dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version......
  • JSON Web Token(JWT)
    JSONWebToken(JWT)什么是JWTJSONWebToken(JWT)是一种用于身份验证和授权的开放标准(RFC7519),它定义了一种紧凑、自包含的方式,用于在网络上传输信息。JWT由三部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature)。头部(Header):Header部分通常由两部分信息组成:令牌的类型(这里......