欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中頁面跳轉(zhuǎn)攔截器的實現(xiàn)方法

 更新時間:2017年08月23日 08:38:58   作者:zhangwenwu  
這篇文章主要給大家介紹了關(guān)于vue中頁面跳轉(zhuǎn)攔截器的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。

本文主要給大家介紹的是關(guān)于vue頁面跳轉(zhuǎn)攔截器的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹:

登錄攔截邏輯

第一步:路由攔截

首先在定義路由的時候就需要多添加一個自定義字段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) { // 判斷該路由是否需要登錄權(quán)限
  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: 當前導(dǎo)航正要離開的路由

     * next: Function: 一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)。

     * next(): 進行管道中的下一個鉤子。如果全部鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed (確認的)。

     * next(false): 中斷當前的導(dǎo)航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應(yīng)的地址。

     * next(‘/') 或者 next({ path: ‘/' }): 跳轉(zhuǎn)到一個不同的地址。當前的導(dǎo)航被中斷,然后進行一個新的導(dǎo)航。

確保要調(diào)用 next 方法,否則鉤子就不會被 resolved。

其中,to.meta中是我們自定義的數(shù)據(jù),其中就包括我們剛剛定義的requireAuth字段。通過這個字段來判斷該路由是否需要登錄權(quán)限。需要的話,同時當前應(yīng)用不存在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>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Vue3實現(xiàn)粒子動態(tài)背景的示例詳解

    Vue3實現(xiàn)粒子動態(tài)背景的示例詳解

    這篇文章主要為大家詳細介紹了如何利用Vue3實現(xiàn)粒子動態(tài)背景,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-11-11
  • Vue組件之自定義事件的功能圖解

    Vue組件之自定義事件的功能圖解

    本文通過圖文并茂的形式給大家介紹了Vue組件之自定義事件的功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • VuePress在build打包時window?document?is?not?defined問題解決

    VuePress在build打包時window?document?is?not?defined問題解決

    這篇文章主要為大家介紹了VuePress在build打包時window?document?is?not?defined問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • vue大型項目之分模塊運行/打包的實現(xiàn)

    vue大型項目之分模塊運行/打包的實現(xiàn)

    這篇文章主要介紹了vue大型項目之分模塊運行/打包的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • vue實現(xiàn)圖片預(yù)覽組件封裝與使用

    vue實現(xiàn)圖片預(yù)覽組件封裝與使用

    這篇文章主要為大家詳細介紹了vue實現(xiàn)圖片預(yù)覽組件封裝與使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • vue2的todolist入門小項目的詳細解析

    vue2的todolist入門小項目的詳細解析

    本篇文章主要介紹了vue2的todolist入門小項目的詳細解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • vue3 setup的使用和原理實例詳解

    vue3 setup的使用和原理實例詳解

    這篇文章主要介紹了vue3的setup的使用和原理,結(jié)合實例形式詳細分析了vue3 setup的基本功能、原理與使用方法,需要的朋友可以參考下
    2023-06-06
  • Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model的詳細過程

    Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model的詳細

    v-model 是 vue3 中的一個內(nèi)置指令,很多表單元素都可以使用這個屬性,如 input、checkbox 等,咱可以在自定義組件中實現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model,需要的朋友可以參考下
    2022-10-10
  • vue綁定設(shè)置屬性的多種方式(5)

    vue綁定設(shè)置屬性的多種方式(5)

    這篇文章主要為大家詳細介紹了vue綁定設(shè)置屬性的多種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決

    vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決

    這篇文章主要介紹了vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論