uni-app通過判斷接口403跳轉登錄頁面的問題


需求: 當向后端請求接口返回 403 的時候,直接跳到登錄頁面讓用戶登錄

實現方案: 在請求結束后攔截器中判斷,如果是 403 就跳轉

遇到難題: 一級頁面(我的) onShow() 中有接口請求,用戶在沒有登錄的狀態下,來到我的頁面, 接口報錯返回403 ,觸發我們在攔截器寫好的方法,跳轉到登錄頁面, 

    出現怪異現象:1.進入到我的頁面, 會連續跳轉2次到登錄頁面(因為我的頁面有兩個請求都返回 403,所以會連續跳兩次)

           2.跳轉到登錄頁面后, 點擊導航欄返回后, 接口會再次請求報錯返回403(因為onShow的方法) ,觸發我們在攔截器寫好的方法,再次跳轉到登錄頁面(死循環)

解決方法:

處理怪異現象1:

1.1在跳轉到登錄頁面之前向本地存儲中獲取 jump (得到空)

1.2if 判斷進入到跳轉登錄頁的方法. (注意延遲300跳轉)

1.3同時再為本地存儲 jump 設一個值.(這樣做就可以避免 300毫秒以內的接口即使報403,也不會進入到if(!jump)函數體中,也就不會出現連續跳轉了)

1.4在登錄頁面將本地存儲 jump 移除(別忘記了,不然之后其他接口報 403 就不會進入函數體了,不會跳轉了)

http.js文件

login.vue 文件

 

 處理怪異現象2:

 

 

 我們在登錄頁面中,使用uni-app的 onBackPress 事件來監聽用戶點擊返回鍵

如果是從其他頁面來的,點擊返回鍵執行back方法

 

 back方法:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM