Vue Router 的导航守卫有哪些?如何实现登录权限控制?
守卫分三类:
- 全局:
beforeEach(最常用,做权限)、beforeResolve、afterEach(不拦截,做埋点) - 路由级:在路由配置里写
beforeEnter - 组件级:
beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !store.isLogin) {
next('/login') // 未登录跳登录
} else {
next() // 必须调用 next() 放行
}
})登录权限:把需要鉴权的路由标记 meta.requiresAuth,在全局 beforeEach 里判断是否登录,未登录 next('/login')。注意 Vue Router 4 中 next 可省略,直接 return 路径即可。