Vue路由器防护排除到带令牌的路径

时间:2019-12-27 17:09:24

标签: vue.js

我已在我的应用中实施了验证电子邮件。注册后,用户将获得一个网址来验证电子邮件,例如:

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')

route / warning_verify_email是一个组件,只是发出警告,请先检查电子邮件并进行验证。

我遇到的问题是:

to.path !== '/verify_email/:token'

不应该的

http://localhost:8080/verify_email/xdGCmMGz6LrBv0s_97gDvQ

重定向到

/warning_verify_email

但是确实如此。

在路线上,path: '/verify_email/:token'有效。所以我以为它也会在后卫中起作用。但事实并非如此。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您的问题可能是您的状况。 to.path是实际路径而不是定义,因此在您的示例中,to.path将是'/verify_email/xdGCmMGz6LrBv0s_97gDvQ'。您需要改为检查to.matched

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