Vue.js Vue路由器保护排除到带有令牌的路径

Vue.js Vue路由器保护排除到带有令牌的路径,vue.js,Vue.js,我已经在我的应用程序中实现了验证电子邮件。注册后,用户将获得验证电子邮件的url,例如: http://localhost:8080/verify_email/xdGCmMGz6LrBv0s_97gDvQ 我有一个路由器防护装置,具有以下条件: else if (store.state.signedIn && !store.state.currentUser.email_confirmed && to.path !== '/warning_verify_emai

我已经在我的应用程序中实现了验证电子邮件。注册后,用户将获得验证电子邮件的url,例如:

http://localhost:8080/verify_email/xdGCmMGz6LrBv0s_97gDvQ
我有一个路由器防护装置,具有以下条件:

else if (store.state.signedIn && !store.state.currentUser.email_confirmed && to.path !== '/warning_verify_email' && to.path !== '/verify_email/:token') next('/warning_verify_email')
路由/警告\u验证\u电子邮件是一个组件,它只提供一个警告,以检查电子邮件并在继续之前进行验证

我遇到的问题是:

to.path !== '/verify_email/:token'
哪一个不应该

http://localhost:8080/verify_email/xdGCmMGz6LrBv0s_97gDvQ
重定向到

/warning_verify_email
但确实如此

在路由中,
path:'/verify\u email/:token'
起作用。所以我想这在守卫中也会起作用。但事实并非如此


如何修复?

您的问题可能是您的状况
to.path
是实际的路由而不是定义,因此在您的示例中,
to.path
将是
'/verify\u email/xdGCmMGz6LrBv0s\u 97gDvQ'
。您需要将
改为.matched

const isVerifyRoute = to.matched.some(route => route.path === '/verify_email/:token');