我已在我的应用中实施了验证电子邮件。注册后,用户将获得一个网址来验证电子邮件,例如:
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'
有效。所以我以为它也会在后卫中起作用。但事实并非如此。
我该如何解决?
答案 0 :(得分:1)
您的问题可能是您的状况。 to.path
是实际路径而不是定义,因此在您的示例中,to.path
将是'/verify_email/xdGCmMGz6LrBv0s_97gDvQ'
。您需要改为检查to.matched
:
const isVerifyRoute = to.matched.some(route => route.path === '/verify_email/:token');