vue-router导航守卫
时间: 2023-11-15 21:51:15 浏览: 161
Vue Router导航守卫是用于在路由导航中进行拦截和控制流程的函数。它可以用于在路由切换前、切换后或切换中进行操作,比如验证用户登录状态、权限控制、路由跳转前的数据准备等。
Vue Router提供了三种导航守卫:
1.全局守卫:在所有路由导航中都会执行的导航守卫,包括路由切换前、切换后和切换中。
2.路由独享守卫:在单个路由中定义的导航守卫,只作用于该路由导航中。
3.组件内守卫:在组件内定义的导航守卫,只作用于该组件的路由导航中。
全局守卫的使用方法如下:
```javascript
router.beforeEach((to, from, next) => {
// to: Route: 即将要进入的目标路由对象
// from: Route: 当前导航正要离开的路由
// next: Function: 一定要调用该方法来 resolve 这个钩子。
// 否则钩子就不会被 resolved。
if (to.meta.requiresAuth && !auth.loggedIn()) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
})
```
这是一个全局的导航守卫,它会在每个路由导航中都执行。这个例子中,它判断了目标路由是否需要登录权限,如果需要登录权限且用户未登录,则跳转到登录页,并保存当前路由地址,登录成功后再跳回该地址。
路由独享守卫和组件内守卫的使用方法类似,可以在路由或组件中定义beforeEnter和beforeRouteUpdate等方法来实现相应的导航守卫功能。
阅读全文