Аутентификация Nuxt с гостевым и промежуточным ПО аутентификации перенаправляет аутентифицированного пользователя при обновлении на неправильную страницу - PullRequest
0 голосов
/ 08 марта 2019

Я создаю приложение с Nuxt, используя nuxt и nuxt-auth для обработки аутентификации.

Я хочу иметь два промежуточных программного обеспечения для auth - auth и guest.Пользователь с правами доступа не должен иметь доступ к странице входа в систему ('/') и будет перенаправлен на панель мониторинга, но может получить доступ куда угодно.Гостевой пользователь не должен иметь доступ к любой странице, кроме страницы входа в систему, и будет перенаправлен на страницу входа при любых попытках.

В настоящее время все работает нормально в отношении аутентификации и входа в систему. Однако когдапрошедший проверку пользователь щелкает ссылку на «/» ИЛИ обновляет страницу, которую он отправляет на страницу входа, и снова получает привилегии «guest», даже если в хранилище vuex для них по-прежнему установлено значение «loggedIn».Похоже, когда SSR пинки в хранилище аутентификации не доступны на сервере, поэтому он перенаправляет пользователя на страницу входа в систему, а затем, когда все запутано, однако это предположение.

Ниженекоторый код:

// layout / default <- используется для страницы входа в систему </p>

export default {
  middleware: 'guest'
}

// layout / dashboard <- используется для всех страниц, прошедших проверку подлинности только для пользователей </p>

export default {
  middleware: 'auth'
}

// middleware / guest.js

export default function (ctx) {
  if (ctx.app.$auth.$state.loggedIn) {
    return ctx.app.$auth.redirect('home')
  }
}

Другое промежуточное ПО аутентификации создается с помощью 'nuxt-auth', файл nuxt.config.js имеет следующие настройки:

  auth: {
    localStorage: false,
    cookie: {
      options: {
        secure: true
      }
    },
    redirect: {
      login: '/',
      logout: '/',
      callback: '/api/auth/callback',
      home: '/dashboard'
    }
  },

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю У меня это решено.Проблема, по-видимому, заключалась в том, что серверная сторона отображала страницу, поскольку у нее не было доступа к файлу авторизации, поэтому я создал другое промежуточное ПО, которое применяется ко всему сайту для проверки аутентификации, которое выполняет следующие действия:

// Проверка auth

export default function (context) {
  context.store.dispatch('auth/initAuth', context.req)
}

Затем в хранилище Vuex мы проверяем, являемся ли мы process.server, и извлекаем JWT из заголовка cookie.Затем мы устанавливаем хранилище аутентификации для пользователя перед запуском промежуточного программного обеспечения auth и guest.

Мне просто нужно пропинговать API, чтобы убедиться, что JWT действителен, и тогда это должно быть.

...