Vue.js 如果目标重定向解析为同一路径,则不调用每个之前的Vue路由器

Vue.js 如果目标重定向解析为同一路径,则不调用每个之前的Vue路由器,vue.js,vuejs2,vue-router,Vue.js,Vuejs2,Vue Router,当我使用router.push('/')作为注销的最后一步时,我遇到了一个问题 如果我从/重定向到的同一路由触发注销过程,则不会触发路由器。在此之前,每个将不会被触发,因此不会将用户重定向到/login,但仍会显示仅登录用户可见的路由(在注销过程结束时,用户不再使用) 及 因此,如果我从/foo以外的任何路径触发注销,它将按预期工作,但如果我从/foo触发注销,则用户将未重定向到/login 我想这可能是为了使路由尽可能有效,但在这种情况下,这肯定不是我想要的 如何确保在每个路由器上评估我的be

当我使用
router.push('/')
作为注销的最后一步时,我遇到了一个问题

如果我从
/
重定向到的同一路由触发注销过程,则不会触发
路由器。在此之前,每个
将不会被触发,因此不会将用户重定向到
/login
,但仍会显示仅登录用户可见的路由(在注销过程结束时,用户不再使用)

因此,如果我从
/foo
以外的任何路径触发注销,它将按预期工作,但如果我从
/foo
触发注销,则用户将未重定向到
/login

我想这可能是为了使路由尽可能有效,但在这种情况下,这肯定不是我想要的


如何确保在每个
路由器上评估我的
beforeach
路由防护。推/替换

路由器。beforeach
防护似乎只有在检测到导航变化时才会运行。因为在您的情况下,路由是相同的,所以您必须通过在y之前推不同的路由路径来强制更改导航我们想要的。事先推一个空的空间效果很好。这是公认的黑客行为

例如:

<button @click="$router.push(' '); $router.push('/')">Logout</button>
注销

创建一个
/logout
路由,该路由重定向到
/
路由


奖励:显示一条带有“成功注销”的漂亮消息几秒钟后重新定向。

为什么在注销时按相同的路径?不应该按登录路径吗?这肯定会触发
路由器。在每次
之前,因为路径实际上是不同的。我希望用户最终进入主页面,而不是登录页…这几乎是我现在所做的,但感觉更糟就像一个黑客,而不是一个干净的解决方案。如果能选择触发对路线的强制评估或其他什么,那就太好了。。。
router.beforeEach((to, from, next) => {
  ...
  if(to.requiresAuth && userLoggedIn == false) 
    next('/login')
  ...
<button @click="$router.push(' '); $router.push('/')">Logout</button>