主页

导航守卫可以控制路由的访问权限

声明全局导航守卫

全局导航守卫会拦截每个路由规则,从而对每个路由进行访问权限的控制:

// 在 router.js 中
// 创建路由实例对象
const router = creteRouter({ ... })

// 调用路由实例对象的 beforeEach 函数,声明 “全局前置守卫”
// fn 必须是一个函数,每次拦截到的路由请求,都会调用 fn 进行处理
// 因此 fn 叫做 “守卫方法”
router.beforeEach(fn)

守卫方法的 3 个形参

// 创建路由实例对象
const router = creteRouter({ ... })

// 全局前置守卫
router.beforeEach((to, from, next) => {
    // to 目标路由对象
    // from 当前导航正要离开的路由对象
    // next 是一个函数,表示放行
})
在守卫方法中如果不声明 next 形参,则默认允许用户访问每一个路由
在守卫方法中如果声明了 next 形参,则必须调用 next() 函数,否则不允许用户访问任何一个路由
next() 函数三种调用方法
1)直接放行:next()
2)强制其停留在当前页面:next(false)
3)强制用户跳转到登录页面:next('/login')

Vue3

版权属于:Joe
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0

目录

来自 《Vue3-路由-导航守卫》
评论

qiaofugui

博主很懒,啥都没有
188 文章数
14 评论量
3 分类数
191 页面数
已在风雨中度过 2年137天19小时18分