【问题标题】:Vue router Guard exclude to path with tokenVue router Guard 排除到带有令牌的路径
【发布时间】:2019-12-27 17:09:24
【问题描述】:

我已在我的应用中实施验证电子邮件。注册后,用户会获得一个 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')

route /warning_verify_email 是一个组件,它只是在继续之前发出检查电子邮件和验证的警告。

我遇到的问题是:

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

不应该做

http://localhost:8080/verify_email/xdGCmMGz6LrBv0s_97gDvQ

重定向到

/warning_verify_email

但确实如此。

在路由中,path: '/verify_email/:token' 有效。所以我假设它也会在警卫中工作。但事实并非如此。

我该如何解决?

【问题讨论】:

    标签: vue.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 2018-11-25
      • 2019-09-05
      • 1970-01-01
      • 2020-12-09
      • 2021-11-27
      • 1970-01-01
      • 2021-11-09
      • 2021-11-01
      相关资源
      最近更新 更多