@mewmew

Проверка авторизации Nuxt3 при перезагрузке страницы?

В приложении nuxt используется middleware для проверки авторизации пользователей. JWT токен для авторизации хранится в куки. При загруженном приложении, данные о пользователе хранятся в store (pinia) и защищенные роуты отображаются корректно при наличии авторизации, в том числе после перезагрузки страницы. Однако, если приложение собрать через generate, то при перезагрузки страницы происходит постоянный редирект, так как данные о пользователе отсутствуют в store. Если использовать уже загруженное приложение, то все работает корректно. При этом, если перезагружать на динамических страницах типа [id].vue, то также все работает.
Так и не могу понять в чем может быть проблема... Если кто-то сталкивался с подобным и нашел решение, буду благодарен

middleware/auth.js
import { useGlobalStore } from "@/stores/global"
const store = useGlobalStore()
export default defineNuxtRouteMiddleware(async (to, from) => {
    if (!store.person) {
    await store.getUserPerson()
  }
  if (!store.is_auth) {
    return navigateTo("/", { replace: true })
  }
})

store
export const useGlobalStore = defineStore("global", () => {
  const is_staff = ref(false)
  const is_auth = ref(false)
  const person = ref()
  const getUserPerson = async () => {
    if (process.client) {
      await myFetch("/auth/users/me/")
        .then((res) => {
          person.value = res
          if (res.access_date) {
            is_auth.value = true
          }
          is_staff.value = res.is_staff
        })
        .catch(() => {})
    } else {
      try {
        const { data: persons, error } = await useMyFetch("/auth/users/me/")
        if (persons && persons.value) {
          person.value = persons.value
          if (persons.value.access_date) {
            is_auth.value = true
          }
          is_staff.value = persons.value.is_staff
        }
      } catch (e) {}
    }
  }
  })
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы