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

首頁 > 編程 > JavaScript > 正文

使用vue-route 的 beforeEach 實現導航守衛(路由跳轉前驗證登錄)功能

2019-11-19 14:07:08
字體:
來源:轉載
供稿:網友

路由跳轉前做一些驗證,比如登錄驗證(未登錄去登錄頁),是網站中的普遍需求。對此,vue-route 提供的 beforeRouteUpdate 可以方便地實現導航守衛(navigation-guards)。

導航守衛(navigation-guards)這個名字,聽起來怪怪的,但既然官方文檔是這樣翻譯的,就姑且這么叫吧。

貼上文檔地址:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

先來摘抄一段文檔中beforeRouteUpdate 的用法:

你可以使用 router.beforeEach 注冊一個全局前置守衛:

const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => {  // ... }) 

當一個導航觸發時,全局前置守衛按照創建順序調用。守衛是異步解析執行,此時導航在所有守衛 resolve 完之前一直處于 等待中。

每個守衛方法接收三個參數:

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

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

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

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

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

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

next(error): (2.4.0+) 如果傳入 next 的參數是一個 Error 實例,則導航會被終止且該錯誤會被傳遞給 router.onError() 注冊過的回調。

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

下面寫一個例子,上一篇博客中我們的賬戶頁,包括課程和訂單,都需要在跳轉前判斷是不是已登錄;已登錄的情況再去登錄頁,跳轉至首頁:

const vueRouter = new Router({   routes: [     //......     {      path: '/account',      name: 'account',      component: Account,      children: [       {name: 'course', path: 'course', component: CourseList},       {name: 'order', path: 'order', component: OrderList}      ]     }   ] }); vueRouter.beforeEach(function (to, from, next) {   const nextRoute = [ 'account', 'order', 'course'];   const auth = store.state.auth;   //跳轉至上述3個頁面   if (nextRoute.indexOf(to.name) >= 0) {     //未登錄     if (!store.state.auth.IsLogin) {       vueRouter.push({name: 'login'})     }   }   //已登錄的情況再去登錄頁,跳轉至首頁   if (to.name === 'login') {     if (auth.IsLogin) {       vueRouter.push({name: 'home'});     }   }   next(); }); 

總結

以上所述是小編給大家介紹的使用vue-route 的 beforeEach 實現導航守衛(路由跳轉前驗證登錄)功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克什克腾旗| 陆丰市| 清水河县| 吉隆县| 新巴尔虎左旗| 济源市| 白朗县| 尖扎县| 盱眙县| 通辽市| 基隆市| 东乡族自治县| 江源县| 开江县| 白玉县| 鸡东县| 伊宁县| 隆昌县| 辛集市| 珠海市| 黄浦区| 德昌县| 溆浦县| 蒙山县| 名山县| 盘锦市| 安吉县| 侯马市| 宜阳县| 灵宝市| 如东县| 六盘水市| 垦利县| 教育| 喀喇| 贵溪市| 天峻县| 华亭县| 确山县| 鸡东县| 长宁县|