Vue 路由攔截 http攔截

2021-10-01 20:26:34 字數 2014 閱讀 4256

登入攔截邏輯

第一步:路由攔截

首先在定義路由的時候就需要多新增乙個自定義欄位requireauth,用於判斷該路由的訪問是否需要登入。如果使用者已經登入,則順利進入路由, 否則就進入登入頁面。

const routes = [,,

component: repository

},];

定義完路由後,我們主要是利用vue-router提供的鉤子函式beforeeach()對路由進行判斷。

router.beforeeach((to, from, next) => 

else // 將跳轉的路由path作為引數,登入成功後跳轉到該路由})}

}else

})

每個鉤子方法接收三個引數:

確保要呼叫 next 方法,否則鉤子就不會被 resolved。

其中,to.meta中是我們自定義的資料,其中就包括我們剛剛定義的requireauth欄位。通過這個欄位來判斷該路由是否需要登入許可權。需要的話,同時當前應用不存在token,則跳轉到登入頁面,進行登入。登入成功後跳轉到目標路由。

登入攔截到這裡就結束了嗎?並沒有。這種方式只是簡單的前端路由控制,並不能真正阻止使用者訪問需要登入許可權的路由。還有一種情況便是:當前token失效了,但是token依然儲存在本地。這時候你去訪問需要登入許可權的路由時,實際上應該讓使用者重新登入。

這時候就需要結合 http *** + 後端介面返回的http 狀態碼來判斷。

第二步:***

要想統一處理所有http請求和響應,就得用上 axios 的***。通過配置http response inteceptor,當後端介面返回401 unauthorized(未授權),讓使用者重新登入。

}return promise.reject(error.response.data) // 返回介面返回的錯誤資訊

});***

首先我們要明白設定***的目的是什麼,當我們需要統一處理http請求和響應時我們通過設定***處理方便很多.

這個專案我引入了element ui框架,所以我是結合element中loading和message元件來處理的.我們可以單獨建立乙個http的js檔案處理axios,再到main.js中引入.

/* http配置 */

// 引入axios以及element ui中的loading和message元件

import axios from 'axios'

import from 'element-ui'

// 超時時間

axios.defaults.timeout = 5000

// http請求***

var loadinginstace

axios.interceptors.request.use(config => )

return config

}, error => )

return promise.reject(error)

})// http響應***

axios.interceptors.response.use(data => , error => )

return promise.reject(error)

})export default axios;

這樣我們就統一處理了http請求和響應的攔截.當然我們可以根據具體的業務要求更改攔截中的處理

Vue 路由攔截

使用sessionstorage,beforeenter進行路由攔截var storage window.sessionstorage storage.setitem auth 1 this router.push teacher import myrouter from router index ...

vue請求攔截響應攔截

2020.10.28 早9.40。今天忙裡偷閒記錄下在vue裡面封裝axios以及請求攔截響應 首先理解整個思路 1 將baseurl提出來,這是訪問服務端的位址。2 使用es6類的寫法封裝axios 3 封裝之後在建立api資料夾在此資料夾裡面引入封裝後的axios,之後就可以建立各個介面。bas...

Vue之攔截與響應攔截

vue中有乙個攔截方法,當我們發起請求或者請求回來的時候,我們需要做一定的資料過濾或者攔截 下面是在開發專案時進行的乙個axios的請求封裝 就是我們在請求之前進行的乙個操作比如說,我們可以在請求之前加乙個loading框,在響應攔截後進行loading框的乙個去除。響應攔截 就是請求得到回應,我們...