84
Vue 3 學習之旅
路由管理

Day 84: 導航守衛 (Navigation Guards)

·6 分鐘閱讀·路由管理

摘要

導航守衛是 Vue Router 提供的一種機制,它允許我們在路由發生變化前、中、後「攔截」導航,並執行自訂邏輯,最常用於實現權限驗證。

定義與說明

守衛可以被註冊在不同層級:全域 router.beforeEach、單一路由 beforeEnter 或元件內部 onBeforeRouteUpdatebeforeEach 是最常用的全域前置守衛,它在每次導航觸發時都會被呼叫,並接收 to、from 和 next 三個參數。

實作範例

實現登入驗證的導航守衛
// router/index.js - 實現一個簡單的登入驗證
router.beforeEach((to, from, next) => {
  const isLoggedIn = localStorage.getItem('token');
  if (to.meta.requiresAuth && !isLoggedIn) {
    // 將使用者重導向到登入頁
    next({ name: 'login' });
  } else {
    // 否則,正常放行
    next();
  }
});

結論

導航守衛是保護應用程式路由、實現複雜權限控制的核心。它像一個門衛,確保只有符合條件的導航才能被執行。

導航守衛 權限驗證 beforeEach