欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue項(xiàng)目實(shí)現(xiàn)token無感刷新的示例代碼

 更新時間:2023年07月21日 08:43:39   作者:fuGUI  
最近在使用系統(tǒng)的過程中,業(yè)務(wù)人員反饋剛登錄一會就提示token過期需要重新登錄,所以本文為大家分享一個無感刷新的實(shí)現(xiàn)代碼,需要的可以參考下

背景

最近在使用系統(tǒng)的過程中,業(yè)務(wù)人員反饋剛登錄一會就提示token過期需要重新登錄,這樣體驗(yàn)很不友好,他們想要把過期時間設(shè)置長一點(diǎn),不想頻繁去登陸。

思考

如果token時間設(shè)置的太長,會有安全的問題;如果可以檢測到token過期,然后請求新的token替換過期的token,再去請求接口,這樣token過期,做到用戶無感知。

實(shí)現(xiàn)

檢測token過期可以主動和被動的去處理,簡單來說,主動判斷就是在token過期前就處理,被動的就是token過期后再去處理。
以下從用三個方法來實(shí)現(xiàn)token的無感刷新。

1.通過返回過期字段判斷

通過token認(rèn)證接口返回的過期字段判斷,然后本地時間進(jìn)行對比,如果過期就重新獲取token,這個也有缺點(diǎn),如果本地時間不準(zhǔn)確,會存在判斷失誤問題。

2.通過定時刷新獲取token

寫個全局定時器,定時刷新token。這個方法顯然不好,不建議使用。

3.通過axios響應(yīng)攔截器中攔截

判斷token 返回過期后,調(diào)用刷新token接口

實(shí)現(xiàn):

// 創(chuàng)建 axios 實(shí)例
const request = axios.create({
  // API 請求的默認(rèn)前綴
  baseURL: baseUrl,
  withCredentials: true,
  timeout: 30000 // 請求超時時間
})
// 此處是為了為了防止多次刷新token,可以通過一個變量isRefreshing 去控制是否在刷新token的狀態(tài)。
let isRefreshing = false // 是否正在刷新的標(biāo)記
此次為了解決同時發(fā)起兩個或兩個以上的請求時,過期如何處理
let requests = [] // 重試隊(duì)列
// 異常攔截處理器
const errorHandler = error => {
  if (error.response) {
   //token過期狀態(tài)碼
    if (error.response.status === 401) {
      if (!isRefreshing) {
        // 正在刷新,執(zhí)行else里面的邏輯
        isRefreshing = true
        return store.dispatch('RefreshToken',store.state.user.refresh_token).then(res => {
//獲取新的token,這里的邏輯自行處理,access_token和refresh_token都需要替換保存
          error.config.headers.Authorization = 'Bearer ' + res.access_token
           // token 請求成功后將數(shù)組的方法重新執(zhí)行
          requests.forEach((cb) => cb(res.access_token))
          requests = [] // 重新請求完清空
          return request(error.config)
        }).catch(() => {
          // 如果刷新的refresh_token也過期了,重新登錄
          notification.error({
            message: 'token過期',
            description: '請重新登錄'
          })
          if (token) {
            store.dispatch('Logout').then(() => {
              window.location.reload()
            })
          }
        }).finally(() => {
          isRefreshing = false
        })
      } else {
        // 返回未執(zhí)行 resolve 的 Promise
        return new Promise(resolve => {
          // 用函數(shù)形式將 resolve 存入,等待刷新后再執(zhí)行
          requests.push(token => {
            error.config.headers.Authorization = 'Bearer ' + token
            resolve(request(error.config))
          })
        })
      }
    }
  }
  return Promise.reject(error)
}

request.interceptors.response.use(response => {
 //......
}, errorHandler)

到此這篇關(guān)于Vue項(xiàng)目實(shí)現(xiàn)token無感刷新的示例代碼的文章就介紹到這了,更多相關(guān)Vue token無感刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vant?Cascader級聯(lián)選擇實(shí)現(xiàn)可以選擇任意一層級

    vant?Cascader級聯(lián)選擇實(shí)現(xiàn)可以選擇任意一層級

    這篇文章主要介紹了vant?Cascader級聯(lián)選擇實(shí)現(xiàn)可以選擇任意一層級方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue內(nèi)部渲染視圖的方法

    Vue內(nèi)部渲染視圖的方法

    這篇文章主要介紹了Vue內(nèi)部渲染視圖的方法,本文通過實(shí)例代碼圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 基于Vue SEO的四種方案(小結(jié))

    基于Vue SEO的四種方案(小結(jié))

    這篇文章主要介紹了基于Vue SEO的四種方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • vue實(shí)現(xiàn)路由不變的情況下,刷新頁面操作示例

    vue實(shí)現(xiàn)路由不變的情況下,刷新頁面操作示例

    這篇文章主要介紹了vue實(shí)現(xiàn)路由不變的情況下,刷新頁面操作,結(jié)合實(shí)例形式分析了vue路由不變的情況下刷新頁面具體原理、操作方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Vue POST請求頭'Content-Type':'application/json;',data上傳過程

    Vue POST請求頭'Content-Type':'application/j

    這篇文章主要介紹了Vue POST請求頭'Content-Type':'application/json;',data上傳過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 在Flask項(xiàng)目中集成并訪問Vue前端項(xiàng)目的流程步驟

    在Flask項(xiàng)目中集成并訪問Vue前端項(xiàng)目的流程步驟

    在現(xiàn)代?Web?開發(fā)中,前后端分離的架構(gòu)模式越來越流行,前端通常使用?Vue、React?等框架開發(fā),而后端則使用?Flask、Django?等框架提供?API?服務(wù),本文將詳細(xì)介紹如何在一個?Flask?項(xiàng)目中集成?Vue?前端項(xiàng)目,并確保能夠正確訪問和運(yùn)行,需要的朋友可以參考下
    2025-03-03
  • vue.js獲得當(dāng)前元素的文字信息方法

    vue.js獲得當(dāng)前元素的文字信息方法

    下面小編就為大家分享一篇vue.js獲得當(dāng)前元素的文字信息方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue如何循環(huán)請求一個接口

    vue如何循環(huán)請求一個接口

    這篇文章主要介紹了vue如何循環(huán)請求一個接口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue跳轉(zhuǎn)頁面的幾種常用方法實(shí)例總結(jié)

    vue跳轉(zhuǎn)頁面的幾種常用方法實(shí)例總結(jié)

    Vue是一種流行的JavaScript框架,用于構(gòu)建用戶界面,在Vue中,頁面跳轉(zhuǎn)通常使用路由(Router)來實(shí)現(xiàn),除此之外還有很多方法,這篇文章主要給大家介紹了關(guān)于vue跳轉(zhuǎn)頁面的幾種常用方法,需要的朋友可以參考下
    2024-05-05
  • vue單向數(shù)據(jù)流的深入理解

    vue單向數(shù)據(jù)流的深入理解

    隨著前端的項(xiàng)目的越來越復(fù)雜,出現(xiàn)了一堆概念來降低開發(fā)的復(fù)雜性,單向數(shù)據(jù)流就是其中一個,下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01

最新評論