Nuxt 3:插件和全局中间件无限循环?

问题描述 投票:0回答:1

使用 Nuxt 3 开发应用程序我制作了一个全局中间件,它应该在每个页面加载之前运行。中间件应检查 cookie 中的 JWT 令牌,并询问有关用户的 API 是否存在 JWT。它看起来像那样。

export default defineNuxtRouteMiddleware(async (to, from) => {
    const {getUser, authByHash} = useAuthStore();
    await getUser();
})

结果 - Nuxt DDOSes API 并每 1-2 秒发送一次请求。无需任何页面刷新和更改。它可以是什么?

附言插件也重复执行

vue.js nuxt.js vuejs3 nuxtjs3
1个回答
0
投票

首先,您可能使用了插件自己的存储功能

useAuthStore()
来获取状态,并且可能是插件重复问题导致页面刷新和更改。而是使用 Nuxt 自己的可组合项,例如
useState()

其次,您必须在中间件运行后结合

navigateTo()
方法导航到某个地方,但在您的代码中,承诺后它会做什么没有定义。

第三,为以下状态提供条件:

if(!authByHash) { await navigateTo('/') }
或类似的内容并重定向。

第四,尝试在路由验证级别而不是中间件获取状态检查点,如下所示:

<script setup>
definePageMeta({
  validate: async (route) => {
    // Check if the id is made up of digits
    return /^\d+$/.test(route.params.id)
  }
})
</script>
© www.soinside.com 2019 - 2024. All rights reserved.