vue中頁面跳轉(zhuǎn)攔截器的實現(xiàn)方法
本文主要給大家介紹的是關于vue頁面跳轉(zhuǎn)攔截器的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:
登錄攔截邏輯
第一步:路由攔截
首先在定義路由的時候就需要多添加一個自定義字段requireAuth,用于判斷該路由的訪問是否需要登錄。如果用戶已經(jīng)登錄,則順利進入路由, 否則就進入登錄頁面。在路由管理頁面添加meta字段
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const routes = [
{
path: '/',
name: "歡迎",
meta: {
requireAuth: true, // 添加該字段,表示進入這個路由是需要登錄的
},
component: resolve => require(["../components/Hello.vue"], resolve)
},
{
path: '/login',
name: "登錄",
/*meta: {
requireAuth: false, // 添加該字段,表示進入這個路由是需要登錄的
},*/
component: resolve => require(["../view/login/login.vue"], resolve)
}
]
export default new Router({
base: "/",
routes
})
定義完路由后,我們主要是利用vue-router提供的鉤子函數(shù)beforeEach()對路由進行判斷。
所以在main.js加上
router.beforeEach((to, from, next) => {
if (to.meta.requireAuth) { // 判斷該路由是否需要登錄權限
if (store.state.token) { // 通過vuex state獲取當前的token是否存在
next();
}
else {
next({
path: '/login',
query: {redirect: to.fullPath} // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
})
}
}
else {
next();
}
})
每個鉤子方法接收三個參數(shù):
* to: Route: 即將要進入的目標 路由對象
* from: Route: 當前導航正要離開的路由
* next: Function: 一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)。
* next(): 進行管道中的下一個鉤子。如果全部鉤子執(zhí)行完了,則導航的狀態(tài)就是 confirmed (確認的)。
* next(false): 中斷當前的導航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應的地址。
* next(‘/') 或者 next({ path: ‘/' }): 跳轉(zhuǎn)到一個不同的地址。當前的導航被中斷,然后進行一個新的導航。
確保要調(diào)用 next 方法,否則鉤子就不會被 resolved。
其中,to.meta中是我們自定義的數(shù)據(jù),其中就包括我們剛剛定義的requireAuth字段。通過這個字段來判斷該路由是否需要登錄權限。需要的話,同時當前應用不存在token,則跳轉(zhuǎn)到登錄頁面,進行登錄。登錄成功后跳轉(zhuǎn)到目標路由。
完成后,我們可以在登錄頁面。控制用戶登錄成功后,vuex的token狀態(tài)改變就可以了
<script>
export default {
methods:{
login(){
this.$store.commit('setToken','true'); //改變token狀態(tài)
let redirect = decodeURIComponent(this.$route.query.redirect || '/'); 獲取登錄成功后要跳轉(zhuǎn)的路由。
this.$router.push({
path: redirect
})
}
}
}
</script>
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Vue.js實戰(zhàn)之利用vue-router實現(xiàn)跳轉(zhuǎn)頁面
- vue-router跳轉(zhuǎn)頁面的方法
- vue實現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面
- Vue-router路由判斷頁面未登錄跳轉(zhuǎn)到登錄頁面的實例
- vue頁面跳轉(zhuǎn)后返回原頁面初始位置方法
- 詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決
- vue路由攔截及頁面跳轉(zhuǎn)的設置方法
- Vue 頁面跳轉(zhuǎn)不用router-link的實現(xiàn)代碼
- mpvue跳轉(zhuǎn)頁面及注意事項
- Vue頁面跳轉(zhuǎn)動畫效果的實現(xiàn)方法
相關文章
vue如何監(jiān)聽對象或者數(shù)組某個屬性的變化詳解
這篇文章主要給大家介紹了關于vue如何監(jiān)聽對象或者數(shù)組某個屬性的變化,在Vue.js中可以通過watch監(jiān)聽屬性變化并動態(tài)修改其他屬性的值,watch通過監(jiān)聽器函數(shù)接收新舊值,實現(xiàn)屬性間的數(shù)據(jù)聯(lián)動,需要的朋友可以參考下2024-12-12
解決vue打包報錯Unexpected token: punc的問題
這篇文章主要介紹了解決vue打包報錯Unexpected token: punc的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Vue2/3?登錄后用戶無操作半小時后自動清除登錄信息退出登錄下線(示例代碼)
這篇文章主要介紹了Vue2/3?登錄后用戶無操作半小時后自動清除登錄信息退出登錄下線,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2024-07-07
vue2+elementUI實現(xiàn)下拉樹形多選框效果實例
這篇文章主要給大家介紹了關于vue2+elementUI實現(xiàn)下拉樹形多選框效果的相關資料,這是最近的工作中遇到的一個需求,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
Vue路由組件的緩存keep-alive和include屬性的具體使用
:瀏覽器頁面在進行切換時,原有的路由組件會被銷毀,通過緩存可以保存被切換的路由組件,本文主要介紹了Vue路由組件的緩存keep-alive和include屬性的具體使用,感興趣的可以了解一下2023-11-11

