Vue-Router导航守卫
在很多时候,我们做的项目中,需要通过路由进行一系列的操作,最常见的就是登录权限验证,荡1用户满足条件时,才可以进入对应的导航,否则就会取消跳转,并跳到登录页面,提示登录。
在做路由的过程中,方法有很多种,有全局的,单个路由独享的,或者组件级的。
全局守卫
Vue-router全局有三个守卫:
- router.beforeEach:全局前置守卫 进入路由之前
- router.beforeResolve:全局解析守卫(2.5.0+)在beforeRouteEach调用之后调用
- router.afterEach全局后置钩子 进入路由之后
使用方法 :
在router下面的index.js中
to,from,next这三个参数
to和from是将要进入和将要离开的路由对象,路由对象指的是平时通过this.$route获取到的路由对象。
- next:Function 这个参数是个函数,且必须调用,否则不能进入路由
- next()进入该路由。
- next(false):取消进入路由,url地址重置为from路由地址(也就是将要离开的路由地址)。
- next跳转新路由,当前的导航呗终端,重新开始一个新的导航。
路由独享守卫
给某些路由单独配置守卫
全局后置钩子的跳转
router.afterEach不接受next函数,所以不会改变导航本身,只能当成一个钩子来使用,可以使用router.push()来跳转
完整的路由导航
- 触发进入其他路由。
- 调用前置守卫: beforeEach
- 调用路由独享守卫: beforeEnter
- 导航被确认。
- 调用全局后置钩子的afterEach钩子。