Nuxt js usando el pasaporte laravel redirecciona a la página de inicio de sesión después de actualizar la página en páginas seguras
Estoy usando el pasaporte laravel para mi autenticación NUXT. Estoy siguiendo este documento:
https://auth.nuxtjs.org/providers/laravel-passport.html#usage
Puedo iniciar sesión con éxito en mi aplicación nuxt. Redirige al tablero después de iniciar sesión en el que tiene el tablero middleware:'auth'
. El problema es. cuando actualizo el panel, se redirige a la página de inicio de sesión. En la consola js, $auth.isAuthenticated
devuelve verdadero, pero en SSR, es falso. Supongo que el problema está encendido middleware:auth
, no estoy seguro. Ya busqué en google pero no hay solución. Ya intenté esto:
https://github.com/nuxt-community/auth-module/issues/478
Mi código se ve así a continuación:
Implementación de la autenticación de pasaporte de Laravel 7 con la interfaz Nuxt
¿Alguien sabe la solución?
Respuestas
La http_only
cookie no está disponible con SSR. Por lo tanto, deberá crear un complemento nuxt. Y allí debe verificar si access_token
no existe y user
existe en las cookies (cuando el usuario inicia sesión, debe crear una cookie con información de usuario o identificación de usuario, personalmente usaría Vuex combinado con vuex-persistedstate ). Y si el usuario existe en las cookies y access_token
no existe, entonces debe actualizar el 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');
});
}
});
}
Para más información, lea esta publicación.
Me enfrenté a este problema recientemente, aunque esta respuesta puede no ser útil para la operación, creo que puede ser útil para otros en el futuro.
Esto es lo que hicimos a continuación, debajo de las rutas de la API que se pueden encontrar en route / api.php, agregue el dominio nuxt js accediendo a la API de la aplicación laravel, use el código a continuación: asegúrese de formatear específicamente para su propio caso de uso
$landingRoutes = function () { //your routes }; Route::group(['domain' => config('app.DASHBOARD_DOMAIN1')], $landingRoutes);
Route::group(['domain' => config('app._DASHBOARD_DOMAIN2')], $landingRoutes);
También escribí sobre esto en mi blog aquí.