通过 nuxt 中间件根据用户的角色重定向用户

Redirect user based on their role via nuxt middleware

我想通过 nuxt 中间件根据用户的角色和其他属性重定向用户。

** 重定向发生但卡在导航守卫中,页面会一次又一次地自动重新加载(每秒重新加载约 500 次)。

#这是我的代码

nuxt.config.js

router: {
  middleware: ['role']
},

middleware/role.js

export default function ({ redirect }) {
  if (!window.localStorage.getItem('auth.token')) {
    return redirect('/auth/login')
  }
}

the screenshot of browser console

重定向是一种全新的页面加载,就像您第一次访问某个页面或在该页面上按 F5 一样。由于你在这里做一些条件,它总是会进行重定向,Vue 应用程序将加载,在无限循环中再次调用中间件。

创建一个 router.push 或检查初始页面是否不是您在 重定向之前 已经在的页面(IMO 不是最好的主意)。

更新答案

在中间件上下文中,如果要访问路由器,需要使用这个

<script>
export default {
  middleware({ app }) {
    if (somethingTrue) { // your condition here
      app.router.push('/')
    }
  },
}
</script>