ZBLOG

import Vue from 'vue' import VueRouter from 'vue-router' import Login from '@/views/login' import Layout from '@/views/layout' import Search from '@/views/search' import Searchlist from '@/views/search/list.vue' import Prodetail from '@/views/prod...

你的导航守卫在 Vue Router 中的实现看起来是正确的,但是有几个地方可能会导致它没有效果。以下是一些常见的问题和检查点:

  1. Token 获取问题: 确保 getInfo() 方法能够正确地返回包含 token 的信息。如果这个方法返回 undefined 或者没有 token,那么每次都会重定向到 /login

  2. 路由定义顺序: 请确保 /login 路由定义在其他路由之前,因为当你访问未登录时如果路径匹配到了其他路由,则可能直接跳转。

  3. Vue Router 版本: 如果你使用的是 Vue Router 4.x(与 Vue 3 配合使用),请确保所用的方法与该版本兼容。在 Vue Router 4 中,导航守卫的使用方式略有不同,需要根据文档确认。

  4. 异步操作: 如果 getInfo() 是一个异步函数,确保在调用之前适当地处理 Promise。例如,你可以将其改为异步函数并使用 await 来获取 token。

  5. 其他组件或中间件影响: 检查是否有其他的中间件、守卫或者插件干扰了导航过程。有时候全局守卫或嵌套路由中的守卫会影响跳转逻辑。

  6. 调试输出: 在控制台查看是否有错误输出,特别是在执行 next() 时,如果有任何异常都会导致导航失败。

示例代码

如果以上都没问题,可以稍微修改一下你的代码来更明确地获取 token,比如:

router.beforeEach((to, from, next) => {
  console.log(to.path, from.path); // 更清晰地打印路径
  const { token } = getInfo() || {}; // 确保安全解构

  if (token) {
    next(); // 放行
  } else {
    next('/login'); // 重定向到登录页面
  }
});

尝试这些步骤,并仔细排查潜在问题,希望能帮助你解决导航守卫无效的问题!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20269

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?