Rerun nuxt route middleware if store getter changes without reloading the page?

Viewed 926

Given following middleware, whats the best way to rerun the logic when ever store.getters.authenticated changes, and not only on the initial load.

middleware/auth.js

export default function ({ store, redirect }) {
  if (!store.getters.authenticated) {
    return redirect({ name: "login" })
  }
}

1 Answers

You asked how to rerun it inside of the middleware itself, which is the 2nd part of a possible middleware trigger (like if the user is not authenticated anymore while staying on the same page) and without any specific action, like when using polling or websockets I thought.

Meanwhile, the 1st part is the easiest: call the middleware globally (in nuxt.config.js) to trigger it on each page navigation.
If he stays on the same page, you can also move with the router as you did but at this point, checking if there is an error in your axios is maybe more appropriate since it's the initiator.

I also do like to use this.$nuxt.refresh() to trigger all the checks when switching accounts globally, helps re-running all those tasty fetch() hooks.

Related