Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
672 views
in Technique[技术] by (71.8m points)

nuxt.js - How to add a redirection in Nuxt router middleware?

I have created a middleware to check if new user email has been verified 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');
  }
}

Then, I have set this middlware globally in nuxt.config.js:

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

But it seems I'm getting an infinite loop, the page in not not responding. It responds again as soon as I comment the redirect line.

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

I probably need to add an exception to this middleware for the page auth/verify but I can't figure out how.

Any idea how I should fix this issue ?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I already did a similar auth middleware in Nuxt.js

You have to skip the middleware if you are on the '/auth/verify' route, as follows:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...