成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

js項目中前端如何實現(xiàn)無感刷新token

瀏覽:11日期:2022-06-12 15:17:41
目錄環(huán)境問題現(xiàn)象原因切入點操作流程1、處理 axios 響應攔截2、封裝 refreshToken 邏輯總結(jié)

前一陣遇到了一個問題,線上平臺有時會出現(xiàn)用戶正在使用的時候,突然要用戶去進行登錄,這樣會造成很不好的用戶體驗,但是當時一直沒有好的思路因此擱置了下來;通過零散時間查詢資料以及思考,最終解決了這個問題,接下來跟大家分享一下!

環(huán)境請求采用的 Axios V1.3.2。平臺的采用的 JWT(JSON Web Tokens) 進行用戶登錄鑒權(quán)。(拓展:JWT 是一種認證機制,讓后臺知道該請求是來自于受信的客戶端;更詳細的可以自行查詢相關(guān)資料)問題現(xiàn)象

線上用戶在使用的時候,偶爾會出現(xiàn)突然跳轉(zhuǎn)到登錄頁面,需要重新登錄的現(xiàn)象。

原因突然跳轉(zhuǎn)到登錄頁面,是由于當前的 token 過期,導致請求失敗;在 axios 的響應攔截axiosInstance.interceptors.response.use中處理失敗請求返回的狀態(tài)碼 401,此時得知token失效,因此跳轉(zhuǎn)到登錄頁面,讓用戶重新進行登錄。平臺目前的邏輯是在 token 未過期內(nèi),用戶登錄平臺可直接進入首頁,無需進行登錄操作;因此就存在該現(xiàn)象:用戶打開平臺,由于此時 token 未過期,用戶直接進入到了首頁,進行其他操作。但是在用戶操作的過程中,token 突然失效了,此時就會出現(xiàn)突然跳轉(zhuǎn)到登錄頁面,嚴重影響用戶的體驗感!(注:目前線上項目中存在數(shù)據(jù)大屏,一些實時數(shù)據(jù)的顯示;因此存在用戶長時間停留在大屏頁面,不進行操作,查看實時數(shù)據(jù)的情況)切入點怎樣及時的、在用戶感知不到的情況下更新token?當 token 失效的情況下,出錯的請求可能不僅只有一個;當失效的 token 更新后,怎樣將多個失敗的請求,重新發(fā)送?操作流程

好了!經(jīng)過了一番分析后,我們找到了問題的所在,并且確定了切入點;那么接下來讓我們實操,將問題解決掉。

前要:

1、我們僅從前端的角度去處理。2、后端提供了兩個重要的參數(shù):accessToken(用于請求頭中,進行鑒權(quán),存在有效期);refreshToken(刷新令牌,用于更新過期的 accessToken,相對于 accessToken 而言,它的有效期更長)。

1、處理 axios 響應攔截

注:在我實際的項目中,accessToken 過期后端返回的 statusCode 值為 401,需要在axiosInstance.interceptors.response.use 的 error回調(diào)中進行邏輯處理。

// 響應攔截axiosInstance.interceptors.response.use( (response) => { return response; }, (error) => { let { data, config } = error.response; return new Promise((resolve, reject) => { /** * 判斷當前請求失敗 * 是否由 toekn 失效導致的 */ if (data.statusCode === 401) { /** * refreshToken 為封裝的有關(guān)更新 token 的相關(guān)操作 */refreshToken(() => { resolve(axiosInstance(config));}); } else {reject(error.response); } }) })我們通過判斷statusCode來確定,是否當前請求失敗是由token過期導致的;使用 Promise 處理將失敗的請求,將由于 token 過期導致的失敗請求存儲起來(存儲的是請求回調(diào)函數(shù),resolve 狀態(tài))。理由:后續(xù)我們更新了 token 后,可以將存儲的失敗請求重新發(fā)起,以此來達到用戶無感的體驗2、封裝 refreshToken 邏輯

要點:

存儲由于token過期導致的失敗的請求。更新本地以及axios中頭部的token。當 refreshToken 刷新令牌也過期后,讓用戶重新登錄。// 存儲由于 token 過期導致 失敗的請求let expiredRequestArr: any[] = [];/** * 存儲當前因為 token 失效導致發(fā)送失敗的請求 */const saveErrorRequest = (expiredRequest: () => any) => { expiredRequestArr.push(expiredRequest);}// 避免頻繁發(fā)送更新 let firstRequre = true;/** * 利用 refreshToken 更新當前使用的 token */const updateTokenByRefreshToken = () => { firstRequre = false; axiosInstance.post( '更新 token 的請求', ).then(res => { let { refreshToken, accessToken } = res.data; // 更新本地的token localStorage.setItem('accessToken', accessToken); // 更新請求頭中的 token setAxiosHeader(accessToken); localStorage.setItem('refreshToken', refreshToken); /** * 當獲取了最新的 refreshToken, accessToken 后 * 重新發(fā)起之前失敗的請求 */ expiredRequestArr.forEach(request => { request(); }) expiredRequestArr = []; }).catch(err => { console.log('刷新 token 失敗err', err); /** * 此時 refreshToken 也已經(jīng)失效了 * 返回登錄頁,讓用戶重新進行登錄操作 */ window.location.href = `${HOME_PAGE}/login`; })}/** * 更新當前已過期的 token * @param expiredRequest 回調(diào)函數(shù),返回由token過期導致失敗的請求 */export const refreshToken = (expiredRequest: () => any) => { saveErrorRequest(expiredRequest); if (firstRequre) { updateTokenByRefreshToken(); }}總結(jié)

經(jīng)過一波分析以及操作,我們最終實現(xiàn)了實際項目中的無感刷新token,最主要的是有效避免了:用戶在平臺操作過程中突然要退出登錄的現(xiàn)象(尤其是當用戶進行信息填寫,突然要重新登錄,之前填寫的信息全部作廢,是很容易讓人發(fā)狂的)。

到此這篇關(guān)于js項目中前端如何實現(xiàn)無感刷新token的文章就介紹到這了,更多相關(guān)js 無感刷新token內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: JavaScript
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
麻豆成人在线观看| 精品视频999| 欧美性xxxxxxxx| 亚洲午夜国产一区99re久久| 极品日韩av| 国产精品欧美久久久久一区二区 | 欧美一区二区三区人| 亚洲综合成人在线| 亚洲一区欧美激情| 亚洲午夜私人影院| 亚洲欧美日韩精品综合在线观看| 欧美夫妻性生活| 天天综合日日夜夜精品| 亚洲免费在线精品一区| 亚洲成av人综合在线观看| 久久精品91| 夜夜精品浪潮av一区二区三区| 国内精品国产成人国产三级粉色| 欧美成人69av| 久久久久久久久久久久久女国产乱| 国产精品福利一区二区三区| 波多野结衣中文字幕一区二区三区| 日韩亚洲不卡在线| 樱花影视一区二区| 国产精品videossex久久发布| 在线免费观看一区| 美腿丝袜亚洲三区| 欧美午夜精品一区| 国产一区二区成人久久免费影院| 亚洲电影在线| 一区二区三区四区蜜桃| 亚洲欧洲综合| 亚洲成av人片在线| 色哟哟国产精品| 日韩av一级片| 欧美巨大另类极品videosbest | 亚洲国产成人av| 久久国产高清| 三级久久三级久久| 8x福利精品第一导航| 99免费精品在线观看| 国产清纯在线一区二区www| 激情成人综合| 婷婷成人激情在线网| 欧美少妇性性性| 国产一区二区三区不卡在线观看| 在线视频精品| 同产精品九九九| 久久久久一区二区| 国产日产欧产精品推荐色| 91麻豆国产香蕉久久精品| 国产精品麻豆网站| 免费一区二区三区| 国产成人精品免费看| 亚洲国产精品激情在线观看| 国产日韩欧美亚洲一区| 美国十次综合导航| 欧美精品一区二区蜜臀亚洲| 国内精品久久久久久久影视蜜臀 | 午夜欧美电影在线观看| 亚洲一区不卡| 国产精品99久久久久久久vr| 国产精品网站在线| 翔田千里一区二区| 国产曰批免费观看久久久| 中文字幕乱码亚洲精品一区| 久久人人超碰| 天天操天天综合网| 欧美日韩亚洲综合| 国内视频一区| 久久国产日韩欧美精品| 久久精品一区二区三区不卡| 国产精品推荐精品| 成人丝袜18视频在线观看| 亚洲精品videosex极品| 欧美主播一区二区三区| ㊣最新国产の精品bt伙计久久| 成人精品一区二区三区四区 | 中文字幕成人av| 国产亚洲网站| 成人精品一区二区三区四区| 亚洲国产综合色| 欧美草草影院在线视频| 国产精品一区亚洲| av亚洲精华国产精华| 亚洲第一搞黄网站| 欧美成人精品二区三区99精品| 偷拍日韩校园综合在线| 69av一区二区三区| 在线视频观看日韩| 国产电影精品久久禁18| 亚洲综合丁香婷婷六月香| 欧美电影免费观看高清完整版在 | 亚洲一本视频| 免费看欧美女人艹b| 2021中文字幕一区亚洲| 久久精品成人| 国产综合色产| 精品写真视频在线观看| 日韩一区中文字幕| 欧美一级淫片007| 久久精品系列| 国产专区一区| 国产综合色在线| 亚洲第一福利视频在线| 精品国产伦一区二区三区观看方式| 国产精品1区2区| 国产精品私人自拍| 欧美日韩国产123区| 亚洲开发第一视频在线播放| 成人精品鲁一区一区二区| 日韩电影在线观看网站| 自拍偷拍亚洲激情| 久久亚洲私人国产精品va媚药| 99国产精品99久久久久久| 午夜国产精品影院在线观看| 日本一区二区三区四区在线视频| 亚洲一级一区| 成人免费视频视频在线观看免费| 久久精品夜夜夜夜久久| 免费在线播放第一区高清av| 欧美成人综合| 国产一区二区三区四区五区入口| 精品噜噜噜噜久久久久久久久试看 | 岛国精品在线观看| 亚洲国产成人va在线观看天堂| 欧洲日韩一区二区三区| 亚洲人成网站在线观看播放| 91在线视频网址| 国产伦精品一区二区三区在线观看| 久久久99精品免费观看不卡| 色88888久久久久久影院野外| 国产成人免费网站| 五月婷婷综合在线| 亚洲精品视频一区二区| 91天堂素人约啪| 国产在线不卡一区| 秋霞影院一区二区| 午夜伊人狠狠久久| 亚洲精品欧美专区| 国产精品美女www爽爽爽| 久久久久久久久蜜桃| 9191成人精品久久| 色婷婷国产精品| 国产视频一区欧美| 日韩一级大片| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲男同性视频| 精品国产伦一区二区三区观看方式 | 性欧美xxxx大乳国产app| 欧美成人69av| 国产成人综合亚洲网站| 日韩高清一区在线| 午夜成人免费电影| 亚洲国产一区二区三区青草影视| 国产日韩综合| 欧美日韩系列| 欧美激情91| 国产一区二区三区四| 亚洲精品v日韩精品| 中文字幕免费不卡在线| 精品国产乱码久久久久久图片| 亚洲国产免费| 国产一区二区中文| 欧美日韩mv| 欧美一区不卡| 午夜久久tv| 欧美国产专区| 欧美午夜免费| 亚洲欧美一区二区原创| 99久久精品99国产精品| 国产福利电影一区二区三区| 久久先锋影音av鲁色资源网| 欧美日韩在线不卡| 欧美性猛交一区二区三区精品| 成人精品电影在线观看| 国产一区二区三区观看| 精品亚洲国内自在自线福利| 久久99久久99| 麻豆国产精品一区二区三区| 舔着乳尖日韩一区| 日本不卡一区二区| 久久精品国产亚洲aⅴ| 美国一区二区三区在线播放| 韩国一区二区三区| 国产尤物一区二区| 国内成+人亚洲+欧美+综合在线| 亚洲天堂中文字幕| 国产视频一区不卡| 日本一区二区三区dvd视频在线| av一二三不卡影片| 成人国产一区二区三区精品| 高清不卡一二三区| 99精品视频一区二区| 懂色av一区二区三区免费观看| 一区二区三区丝袜| 亚洲老司机在线| 亚洲欧美日韩一区二区| 亚洲精品成人悠悠色影视| 亚洲国产精品99久久久久久久久 |