需求: 當向後端請求接口返回 403 的時候,直接跳到登陸頁面讓用戶登陸vue
實現方案: 在請求結束後攔截器中判斷,若是是 403 就跳轉後端
遇到難題: 一級頁面(個人) onShow() 中有接口請求,用戶在沒有登陸的狀態下,來到個人頁面, 接口報錯返回403 ,觸發咱們在攔截器寫好的方法,跳轉到登陸頁面, app
出現怪異現象:1.進入到個人頁面, 會連續跳轉2次到登陸頁面(由於個人頁面有兩個請求都返回 403,因此會連續跳兩次)函數
2.跳轉到登陸頁面後, 點擊導航欄返回後, 接口會再次請求報錯返回403(由於onShow的方法) ,觸發咱們在攔截器寫好的方法,再次跳轉到登陸頁面(死循環)spa
解決方法:blog
處理怪異現象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方法: