VUE全局路由守卫
xuexi 2023-09-19 09:36:02 发表在:PHP 查看数:1020

语法:

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
知识库:340条鸣谢:TAY  备案号:蜀ICP备2024090044号