如何在 Nuxt 路由器中间件中添加重定向?

How to add a redirection in Nuxt router middleware?

我创建了一个中间件来检查新用户电子邮件是否已经过验证middleware/verify_email.js:

export default function (context) {
  if (context.$auth.loggedIn && !context.$auth.user.email_verified_at) {
    console.log('logged in with email not verified');
    return context.redirect('/auth/verify');
  }
}

然后,我在nuxt.config.js中全局设置了这个中间件:

  router: {
    middleware: ['auth', 'verify_email']
  },

但我似乎陷入了无限循环,页面没有响应。我一评论重定向行,它就会再次响应。

NavigationDuplicated: Avoided redundant navigation to current location: "/auth/verify".

我可能需要为页面 auth/verify 添加一个例外到这个中间件,但我不知道如何做。

知道我应该如何解决这个问题吗?

我已经在Nuxt.js

中做了一个类似的授权中间件

如果是'/auth/verify'路由就得跳过中间件,如下:

export default function (context) {

  if (context.route.name === "auth-verify")
    // skip middleware
    return
  }

  if (context.$auth.loggedIn && !context.$auth.user.email_verified_at) {
    console.log('logged in with email not verified');
    return context.redirect('/auth/verify');
  }
}