Nuxt js с использованием паспорта laravel перенаправляет на страницу входа после обновления страницы на защищенных страницах
Я использую паспорт 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
Кто-нибудь знает решение?
Ответы
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');
});
}
});
}
Для получения дополнительной информации прочтите этот пост
Я столкнулся с этой проблемой совсем недавно, хотя этот ответ может быть бесполезен для оператора, я считаю, что он может быть полезен другим в будущем.
Это то, что мы сделали ниже, под вашими маршрутами 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);
Я тоже писал об этом в своем блоге здесь