系统登录成功后,后端返回token和refreshToken,所有请求都携带token,token如果过期接口将返回401,此时前端需要拿着refreshToken去刷新token,刷新后将拿到新的token和refreshToken,并将token过期的请求重新发起,这样就做到了在用户没有任何感知的情况下自动刷新token。

request.js中的代码

//默认不是正在刷新token
let isRefreshToken = false;
let promiseArry = [];
//当token失效时
if(res.errcode===401){//如果没有正在刷新tokenif(!isRefreshToken){isRefreshToken=true;//刷新tokenstore.dispatch('SetToken').then((res)=>{//刷新token成功后,将正在刷新token时发起的请求重新发起promiseArry.forEach(item=>item());//发起后将promiseArry置空promiseArry=[];return Axios(response.config);}).catch(error=>{isRefreshToken=false;return Promise.reject(res);});}else{//如果正在刷新token,将发起的请求暂存在promiseArry中return new Promise((resolve)=>{promiseArry.push(item=>{resolve(Axios(response.config));})})}
}

vuex中的代码

import { getToken, setToken, removeToken } from '@/assets/js/auth';
import router from '@/router';
const user = {state: {token: getToken(),refreshToken:'',},mutations: {SET_TOKEN: (state, token) => {state.token = token;setToken(token);},SET_REFRESHTOKEN:(state,refreshToken) => {state.refreshToken=refreshToken}},actions: {//设置tokenSetToken({ commit }) {return new Promise((resolve,reject)=>{let params = {client_id:"c1ebe466-1cdc-4bd3-ab69-77c3561b9dee",client_secret:"d8346ea2-6017-43ed-ad68-19c0f971738b",grant_type:"refresh_token",refresh_token:user.state.refreshToken}console.log(params)oauthToken(params).then(response=>{commit('SET_TOKEN', response.accessToken);commit('SET_REFRESHTOKEN', response.refreshToken);resolve(response);}).catch(error=>{reject(error);});});}}
};
export default user;

token过期后刷新token并重新发起请求相关推荐

  1. java app token 失效_请求时token过期自动刷新token操作

    1.在开发过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token,证明其请求的 ...

  2. java 后台自动刷新请求_请求时token过期自动刷新token

    1.在开发过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token,证明其请求的 ...

  3. python token过期_请求时token过期自动刷新token

    1.在开发过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token,证明其请求的 ...

  4. php token 自动过期,请求时token过期自动刷新token

    1.在开发时这例随时幻近我些如机兼灯近我些如机兼灯过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次 ...

  5. 小程序token过期后, 实现无感知的刷新token

    当我们使用在小程序中做用户登录的时候, 后台给用户一个token, 小程序端用本地缓存token ,以后每次请求的时候,带上这个token 发起请求, 后端解析token中的数据, 查看是否有过期,或 ...

  6. php token过期刷新处理,Laravel Passport token过期后判断refresh_token是否过期

    需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...

  7. 前端刷新token,判断token是否过期,若没有过期则刷新token,过期则退出登录

    所用框架 vue+axios 为什么要刷新token 假设后端设置的token过期时间为10分钟.那么登录以后,过十分钟后token就会过期,这时再去操作系统,所有的请求都不能用,都会报token过期 ...

  8. token 过期后,如何自动续期?

    JWT token的 payload 部分是一个json串,是要传递数据的一组声明,这些声明被JWT标准称为claims. JWT标准里面定义的标准claim包括: iss(Issuser):JWT的 ...

  9. Vue 消除Token过期时刷新页面的重复提示

    1.问题现象   页面长时间未操作,再刷新页面时,第一次弹出"token失效,请重新登录!"提示,然后跳转到登录页面,接下来又弹出了n个"Token已过期"的后 ...

最新文章

  1. 通知 | “大数据能力提升项目”证书办理及领取(2021年秋季学期)
  2. jQuery对select操作
  3. Ajax PHP 边学边练 之四 表单
  4. C#开发Android应用的必备——Mono for Android V1.0 发布
  5. 再次学习mysql优化
  6. sqlserver 2008 多表更新
  7. 分布式光伏补贴_光伏发电上网电价政策综述
  8. 11G数据库导入10G的操作实践
  9. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
  10. dubbo原理_Dubbo原理浅析
  11. 产品经理适合当项目经理吗?
  12. “21天好习惯”第一期-21
  13. 【BZOJ-2888】资源运输 LCT + 启发式合并
  14. Mysql的跨表更新
  15. [概率论与数理统计-1]: 总体架构、知识结构、知识体系
  16. 使用LaTex绘制神经网络图
  17. 简单做(ZTD)的十个好习惯总结
  18. python股票网格交易法详解_详解网格交易法
  19. 2017已经接近尾声,然而我却什么都没干成
  20. 根据ParentId生成树状结构这po事

热门文章

  1. linux中cat的一个用法(向文件里面添加内容)
  2. php 分隔视频,视频画面分割器怎么将视频画面分割成三部分?怎么分割视频画面并凸显部分?...
  3. 【面试】嵌入式C语言题目整理
  4. PostgreSQL and bloat
  5. RGB 与 BGR 颜色深度、像素和字节之间的关系
  6. CSS网页设计教程:表单Button的Outl…
  7. [数论 斐波那契] 51nod1355. 斐波那契的最小公倍数
  8. 51nod1355:斐波那契的最小公倍数(数论)
  9. Docker 入门学习
  10. 关于visual studio下载过慢的问题