在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ axios請(qǐng)求之前判斷token是否過期,如果過期先請(qǐng)求token再發(fā)送請(qǐng)求

axios請(qǐng)求之前判斷token是否過期,如果過期先請(qǐng)求token再發(fā)送請(qǐng)求

1.遇到一個(gè)token過期的問題,進(jìn)入系統(tǒng)先判斷是否有token,如果沒有則先請(qǐng)求token。

2.在后續(xù)的其它請(qǐng)求發(fā)送之前都先判斷token是否過期,如果過期,則重新請(qǐng)求token,然后再發(fā)請(qǐng)求。

3.各位大神,用axios攔截有沒有好的方案實(shí)現(xiàn), 麻煩解答一下,謝謝!

回答
編輯回答
清夢(mèng)

這個(gè)使用fly.js無(wú)疑是最好的選擇,基本使用與axios相同,fly.js可以在請(qǐng)求攔截器中執(zhí)行異步任務(wù)檢查token,具體見官網(wǎng) fly.js

var csrfToken="";
var tokenFly=new Fly();
var fly=new Fly();
fly.interceptors.request.use(function (request) {
  log(`發(fā)起請(qǐng)求:path:${request.url},baseURL:${request.baseURL}`)
  if (!csrfToken) {
    log("沒有token,先請(qǐng)求token...");
    //鎖定當(dāng)天實(shí)例,后續(xù)請(qǐng)求會(huì)在攔截器外排隊(duì),詳情見后面文檔
    fly.lock();
    return newFly.get("/token").then((d) => {
      request.headers["csrfToken"] = csrfToken = d.data.data.token;
      log("token請(qǐng)求成功,值為: " + d.data.data.token);
      log(`繼續(xù)完成請(qǐng)求:path:${request.url},baseURL:${request.baseURL}`)
      return request; //只有最終返回request對(duì)象時(shí),原來的請(qǐng)求才會(huì)繼續(xù)
    }).finally(()=>{
      fly.unlock();//解鎖后,會(huì)繼續(xù)發(fā)起請(qǐng)求隊(duì)列中的任務(wù),詳情見后面文檔
    })
  } else {
    request.headers["csrfToken"] = csrfToken;
  }
})
2018年3月27日 13:23