@EvilDev

Как сделать редирект nuxt3 middleware?

Пытаюсь сделать редиректы в зависимости от состояния авторизации пользователя. Авторизация везде обязательна.

export default defineNuxtRouteMiddleware(  async (to, from) => {
    if (!process.client) {
        return;
    }

    const accessToken: string|null = useUserAccessToken();
    const userStore = useUserStore();
    if (accessToken != null) {
        const identity = <TypeUserIdentity>await useQueryApi('/user/identity/index');
        userStore.setIdentity(identity);
    }

    const isGuest: boolean = userStore.isGuest;
    if (isGuest) {
        if (from.path != '/user/auth/login') {
            return navigateTo('/user/auth/login');
        }
    } else {
        if (from.path == '/user/auth/login') {
            return navigateTo('/');
        } else if (to.path == '/user/auth/logout') {
            localStorage.removeItem('auth.accessToken');
            userStore.setIdentity(null);
            return navigateTo('/');
        }
    }
});


Отрабатывает 12 раз, после чего выдает ошибку. Редиректа как такового не происходит. Версия 3.0. Что я не так делаю? Возможно получение сущности пользователя не совсем верное т.к. нужно только один раз запрашивать данные.
  • Вопрос задан
  • 849 просмотров
Решения вопроса 1
@EvilDev Автор вопроса
Где то что то в коде напортачил, так +- верно
export default defineNuxtRouteMiddleware(   async (to, from) => {
    await useUserQueryAuth();
    if (useUserStore().isGuest && to.path !== '/user/auth/login') {
        return navigateTo('/user/auth/login');
    }

    if (!useUserStore().isGuest && to.path === '/user/auth/login') {
        return navigateTo('/');
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы