Nuxt js с использованием паспорта laravel перенаправляет на страницу входа после обновления страницы на защищенных страницах

Aug 19 2020

Я использую паспорт laravel для аутентификации NUXT. Я слежу за этим документом:

https://auth.nuxtjs.org/providers/laravel-passport.html#usage

Я могу успешно войти в свое приложение nuxt. Он перенаправляется на панель управления после входа в систему, где есть middleware:'auth'. Проблема в. когда я обновляю панель управления, она перенаправляется обратно на страницу входа. На консоли js $auth.isAuthenticatedвозвращает true, но на SSR - false. Думаю, проблема в том middleware:auth, я не уверен. Я уже искал в Google, но решения нет. Я уже пробовал это:

https://github.com/nuxt-community/auth-module/issues/478

Мой код выглядит так:

Реализация аутентификации паспорта Laravel 7 с помощью интерфейса Nuxt

Кто-нибудь знает решение?

Ответы

1 StefanTanevski Aug 21 2020 at 11:08

http_onlyПеченье не доступен с ССР. Поэтому вам нужно будет создать плагин nuxt. И там вы должны проверить access_token, не существует ли и userсуществует ли в файлах cookie (когда пользователь входит в систему, вы должны создать cookie с информацией о пользователе или идентификатором пользователя, лично я бы использовал Vuex в сочетании с vuex-persistedstate ). И если пользователь существует в файлах cookie и access_tokenне существует, вам следует обновить токен.

plugins/refresh-token.js

import clientCookies from 'js-cookie';

/**
 * For refreshing the token on page reload.
 *
 * @param  {Object} context.store
 * @return {Void}
 */
export default function ({store}) {
  window.onNuxtReady(() => {
    let token = clientCookies.get('x-access-token');
    let user = store.getters['user/currentUser'];

    if (user && ! token) {
      store.dispatch('auth/refreshToken')
        .catch(errors => {
          store.dispatch('auth/signUserOut');
        });
    }
  });
}

Для получения дополнительной информации прочтите этот пост

OlumideOmotoso Sep 15 2020 at 12:54

Я столкнулся с этой проблемой совсем недавно, хотя этот ответ может быть бесполезен для оператора, я считаю, что он может быть полезен другим в будущем.

Это то, что мы сделали ниже, под вашими маршрутами api, которые можно найти в routes / api.php, добавьте домен nuxt js для доступа к api приложения laravel, используйте приведенный ниже код - убедитесь, что вы форматируете специально для вашего собственного варианта использования

$landingRoutes = function () { //your routes }; Route::group(['domain' => config('app.DASHBOARD_DOMAIN1')], $landingRoutes);
Route::group(['domain' => config('app._DASHBOARD_DOMAIN2')], $landingRoutes);

Я тоже писал об этом в своем блоге здесь