VUE全局路由守卫
语法:
router.beforeEach((to, from, next) => {
// 在每次路由导航触发前执行的逻辑
});
// 全局的路由导航守卫
router.beforeEach((to, from, next) => {
const zt = localStorage.getItem('token'); // 根据实际情况判断用户是否已登录
if (to.path !== '/login' && !zt) {
// 如果用户未登录且访问的不是登录页,则重定向到登录页
next('/login');
} else {
// 已登录或者访问的是登录页,则正常跳转
next();
}
});
//路由守卫结束
在上述示例中,我们通过 router.beforeEach 方法注册了一个全局前置守卫。在每次路由导航之前,该守卫会被调用。守卫的回调函数接收三个参数:
to:即将跳转的目标路由对象 from:当前导航正要离开的路由对象 next:用于控制导航行为的回调函数 在守卫的回调函数中,你可以根据业务需求执行相应的操作,如验证用户权限、检查登录状态、取消导航或重定向到其他路由。next 函数用于控制导航的继续或中断。
若要中断当前导航并取消跳转,可以调用 next(false)。 若要重定向到其他路由,并且希望中断当前导航,可以调用 next('/other-route')。 若无需中断导航,则调用 next() 允许导航继续。 全局前置守卫(Global before Guards)可以在以下场景中发挥作用:
登录验证:你可以使用全局前置守卫来验证用户是否已登录。通过检查用户的登录状态或者验证用户的身份信息,可以防止未经授权的用户访问需要登录权限的页面。
权限控制:全局前置守卫可以用于实现基于角色或权限的访问控制。通过在守卫中检查用户的角色或权限,可以限制用户只能访问其具备权限的页面,并在没有权限时进行相应的处理,如跳转到错误页面或提示无权限信息。
路由拦截:在进行路由导航之前,你可以使用全局前置守卫来拦截、修改或重定向导航。根据特定的条件或业务需求,你可以在守卫中对导航进行处理,如取消导航、修改目标路由或跳转到其他页面。
数据预处理:有时,在进入某个路由之前,你可能需要对相关数据进行加载、初始化或验证等操作。全局前置守卫可以帮助你在导航发生前执行这些预处理任务,确保数据的准备工作完成后再进入目标路由。
最近访问时间:2025-04-30 09:48:41