两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種多并發(fā)請求場景下刷新令牌的方法與流程

文檔序號:40257388發(fā)布日期:2024-12-11 12:48閱讀:56來源:國知局
一種多并發(fā)請求場景下刷新令牌的方法與流程

本發(fā)明涉及計算機應(yīng)用,特別涉及一種多并發(fā)請求場景下刷新令牌的方法。


背景技術(shù):

1、token在計算機身份認證中是令牌的意思,表示執(zhí)行某些操作的權(quán)利的對象。使用令牌token進行用戶身份鑒權(quán)認證,能防止未經(jīng)授權(quán)的用戶訪問受限資源,提高安全性,減少網(wǎng)絡(luò)傳輸和服務(wù)器的負載,提高性能,減少服務(wù)器負擔(dān)。

2、flutter是谷歌推出的一個開源的ui(用戶界面)軟件開發(fā)工具包,用于開發(fā)跨平臺的應(yīng)用程序。它允許開發(fā)者使用一套代碼庫來構(gòu)建在android、ios、web和桌面平臺上運行的高性能、美觀的應(yīng)用程序。

3、flutter網(wǎng)絡(luò)客戶端在向服務(wù)端請求數(shù)據(jù)過程中,會在請求中帶上令牌token用于服務(wù)端鑒權(quán)。為了保證安全,令牌token要有時效性,為了避免令牌token被惡意攻擊或過期,客戶端需要在發(fā)送請求后被服務(wù)端告知令牌token過期時,向服務(wù)端發(fā)送刷新令牌token的請求,以獲得新的令牌token,然后再重新請求之前失敗的請求。

4、隨著flutter應(yīng)用客戶端功能越來越復(fù)雜,在flutter客戶端使用過程中,會存在同時發(fā)出多個異步請求的情況。在令牌token失效的情況下會觸發(fā)多次刷新token的請求,導(dǎo)致同時異步刷新令牌token多次,但是最終只會有一個令牌token有效,多個請求會拿著錯誤的令牌token再次重復(fù)請求,又會導(dǎo)致令牌token失效報錯,引發(fā)連環(huán)問題。

5、基于上述情況,本發(fā)明提出了一種多并發(fā)請求場景下刷新令牌的方法。


技術(shù)實現(xiàn)思路

1、本發(fā)明為了彌補現(xiàn)有技術(shù)的缺陷,提供了一種簡單高效的多并發(fā)請求場景下刷新令牌的方法。

2、本發(fā)明是通過如下技術(shù)方案實現(xiàn)的:

3、一種多并發(fā)請求場景下刷新令牌的方法,其特征在于:包括以下步驟:

4、步驟s1、統(tǒng)一攔截網(wǎng)絡(luò)請求任務(wù)的服務(wù)端返回結(jié)果response,判斷當(dāng)前請求任務(wù)返回令牌token是否失效;若返回令牌token失效,則刷新令牌token;可能會同時存在多個異步請求任務(wù)需要刷新令牌token;

5、步驟s2、將攔截到的所有需要刷新令牌token的異步請求任務(wù)放進一個flutter同步隊列queue中,依次執(zhí)行刷新任務(wù),同時將新任務(wù)不斷添加進同步隊列queue中;

6、步驟s3、在同步隊列queue中,依次執(zhí)行刷新任務(wù);

7、步驟s4、取出隊列中第一個任務(wù),判斷全局令牌token是否為有效狀態(tài):

8、若全局令牌token為有效狀態(tài),則重新請求最新的全局令牌token;

9、若全局令牌token為失效狀態(tài),則觸發(fā)請求獲取新的全局令牌token;

10、步驟s5、重復(fù)步驟s4,直至隊列中的任務(wù)都執(zhí)行完,成隊列清空。

11、所述步驟s4中,取出隊列中第一個任務(wù),判斷之前任務(wù)請求時的令牌token與當(dāng)前最新的全局令牌token是否相同:

12、若不同,則說明全局令牌token已經(jīng)被刷新成有效狀態(tài),直接用最新的全局令牌token重新請求,并記錄為重新請求的任務(wù),然后從同步隊列queue中刪除對應(yīng)的任務(wù);

13、若相同,則說明當(dāng)前全局令牌token還是失效狀態(tài),觸發(fā)請求獲取新令牌token。

14、所述步驟s4中,如果請求獲取新令牌token失敗,則該請求任務(wù)直接返回獲取新令牌token失敗的響應(yīng)數(shù)據(jù)response;

15、如果請求獲取新令牌token成功,則更新全局令牌token,再用新的全局令牌token重新請求,并記錄為重新請求的任務(wù),然后從同步隊列queue中刪除對應(yīng)的任務(wù)。

16、所述步驟s4中,記錄重新請求全局令牌token的任務(wù),當(dāng)任務(wù)再次請求成功時,刪除對應(yīng)的重新請求記錄;

17、當(dāng)任務(wù)再次請求失敗時,如果判定該任務(wù)是之前重新請求的任務(wù),則不再執(zhí)行刷新令牌token操作,直接返回獲取新令牌token失敗的響應(yīng)數(shù)據(jù)response。

18、一種多并發(fā)請求場景下刷新令牌的系統(tǒng),其特征在于:包括任務(wù)攔截模塊,同步隊列管理模塊和令牌刷新模塊;

19、所述任務(wù)攔截模塊負責(zé)統(tǒng)一攔截網(wǎng)絡(luò)請求任務(wù)的服務(wù)端返回結(jié)果response,判斷當(dāng)前請求任務(wù)返回令牌token是否失效;若返回令牌token失效,則刷新令牌token;

20、所述同步隊列管理模塊負責(zé)將攔截到的所有需要刷新令牌token的異步請求任務(wù)放進一個flutter同步隊列queue中,依次執(zhí)行刷新任務(wù),同時將新任務(wù)不斷添加進同步隊列queue中;

21、所述令牌刷新模塊負責(zé)在同步隊列queue中依次執(zhí)行刷新任務(wù);

22、取出隊列中第一個任務(wù),判斷全局令牌token是否為有效狀態(tài):

23、若全局令牌token為有效狀態(tài),則所述令牌刷新模塊重新請求最新的全局令牌token;

24、若全局令牌token為失效狀態(tài),則所述令牌刷新模塊觸發(fā)請求獲取新的全局令牌token;

25、再繼續(xù)取出隊列中的第一個任務(wù),重復(fù)執(zhí)行上述邏輯,直至隊列中的任務(wù)都執(zhí)行完,成隊列清空。

26、所述令牌刷新模塊取出隊列中第一個任務(wù)后,先判斷之前任務(wù)請求時的令牌token與當(dāng)前最新的全局令牌token是否相同:

27、若不同,則說明全局令牌token已經(jīng)被刷新成有效狀態(tài),直接用最新的全局令牌token重新請求,并記錄為重新請求的任務(wù),然后從同步隊列queue中刪除對應(yīng)的任務(wù);

28、若相同,則說明當(dāng)前全局令牌token還是失效狀態(tài),觸發(fā)請求獲取新令牌token;

29、如果請求獲取新令牌token失敗,則該請求任務(wù)直接返回獲取新令牌token失敗的響應(yīng)數(shù)據(jù)response;

30、如果請求獲取新令牌token成功,則更新全局令牌token,再用新的全局令牌token重新請求,并記錄為重新請求的任務(wù),然后從同步隊列queue中刪除對應(yīng)的任務(wù)。

31、所述令牌刷新模塊記錄重新請求全局令牌token的任務(wù),并在任務(wù)再次請求成功時,刪除對應(yīng)的重新請求記錄;

32、當(dāng)任務(wù)再次請求失敗時,所述令牌刷新模塊判定該任務(wù)收否為之前重新請求的任務(wù),若是則不再執(zhí)行刷新令牌token操作,直接返回獲取新令牌token失敗的響應(yīng)數(shù)據(jù)response。

33、一種多并發(fā)請求場景下刷新令牌的設(shè)備,其特征在于:包括存儲器和處理器;所述存儲器用于存儲計算機程序,所述處理器用于執(zhí)行所述計算機程序時實現(xiàn)上述的方法步驟。

34、一種可讀存儲介質(zhì),其特征在于:所述可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述的方法步驟。

35、本發(fā)明的有益效果是:該多并發(fā)請求場景下刷新令牌的方法,能夠在不影響每個業(yè)務(wù)獨立請求的情況下,無感自動刷新令牌token并重新請求,解決了多并發(fā)請求場景下刷新令牌token的問題;同時代碼無侵入性,不影響單個網(wǎng)絡(luò)請求相關(guān)代碼,不會增加單個網(wǎng)絡(luò)請求的成本。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
都昌县| 台北县| 岑溪市| 历史| 丘北县| 富平县| 河曲县| 四子王旗| 宁武县| 河源市| 扎赉特旗| 蒲城县| 焦作市| 崇礼县| 惠安县| 容城县| 汶川县| 河北省| 山阴县| 诸城市| 浦县| 肇庆市| 北安市| 仲巴县| 突泉县| 石屏县| 手游| 东乡县| 宁武县| 庆安县| 哈尔滨市| 容城县| 大港区| 乌兰察布市| 定安县| 涿鹿县| 任丘市| 花莲市| 耿马| 景德镇市| 余姚市|