vue导航守卫是是一种Vue Router内置的功能,它可以让我们在路由切换的过程中执行自定义的代码逻辑。
举一个简单的例子:
import Vue from 'vue';
import Router from 'vue-router';Vue.use(Router);const router = new Router({// 路由配置...
});// 全局前置导航守卫
router.beforeEach((to, from, next) => {// 获取当前用户的登录状态(这里仅作示例,实际项目中可能来自vuex或localStorage)let isLoggedIn = !!localStorage.getItem('userToken');if (to.meta.requiresAuth && !isLoggedIn) {// 判断目标路由是否要求认证(通过meta字段标记),若未登录则重定向到登录页面next({ path: '/login', query: { redirect: to.fullPath } });} else {// 用户已登录或目标路由无需认证,允许继续导航next();}
});export default router;
在这个例子中,每当试图切换到一个设置了 requiresAuth: true
的路由时,导航守卫会先检查用户是否已经登录(通过检查localStorage中的token)。如果没有登录,它会阻止原本的跳转操作,并将用户重定向到登录页面。如果用户已登录,则放行,允许路由正常跳转。这就是Vue导航守卫在实际应用场景中起到的作用。