国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue中頁面跳轉攔截器的實現方法

2019-11-19 15:42:37
字體:
來源:轉載
供稿:網友

本文主要給大家介紹的是關于vue頁面跳轉攔截器的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

登錄攔截邏輯

第一步:路由攔截

首先在定義路由的時候就需要多添加一個自定義字段requireAuth,用于判斷該路由的訪問是否需要登錄。如果用戶已經登錄,則順利進入路由, 否則就進入登錄頁面。在路由管理頁面添加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提供的鉤子函數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} // 將跳轉的路由path作為參數,登錄成功后跳轉到該路由   })  } } else {  next(); }})

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

     * to: Route: 即將要進入的目標 路由對象

     * from: Route: 當前導航正要離開的路由

     * next: Function: 一定要調用該方法來 resolve 這個鉤子。執行效果依賴 next 方法的調用參數。

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

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

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

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

其中,to.meta中是我們自定義的數據,其中就包括我們剛剛定義的requireAuth字段。通過這個字段來判斷該路由是否需要登錄權限。需要的話,同時當前應用不存在token,則跳轉到登錄頁面,進行登錄。登錄成功后跳轉到目標路由。

完成后,我們可以在登錄頁面。控制用戶登錄成功后,vuex的token狀態改變就可以了

<script>export default { methods:{ login(){  this.$store.commit('setToken','true');  //改變token狀態  let redirect = decodeURIComponent(this.$route.query.redirect || '/'); 獲取登錄成功后要跳轉的路由。  this.$router.push({  path: redirect  }) } }}</script>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荆州市| 德令哈市| 定襄县| 上栗县| 收藏| 曲靖市| 栾川县| 工布江达县| 七台河市| 南召县| 河西区| 金平| 易门县| 雷州市| 金寨县| 容城县| 罗田县| 凉城县| 会昌县| 墨江| 闽清县| 弥渡县| 西安市| 会宁县| 孟州市| 定日县| 平陆县| 金平| 绵竹市| 云南省| 桃源县| 屏东县| 宾川县| 阿荣旗| 左贡县| 阿克苏市| 九台市| 汝阳县| 新邵县| 诸暨市| 乌拉特前旗|