Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

215
Vistas
Implementación de protecciones de enrutador vue.js cuando la información del usuario proviene de una función asíncrona

Estoy trabajando en una aplicación Vue.js y necesito implementar protectores de enrutador para limitar el acceso según la función del usuario y evitar que un usuario no registrado acceda a la aplicación. El proceso de inicio de sesión involucra una aplicación externa (WSO2 Identity Server, específicamente), y la información del usuario recuperada se guarda en una tienda Vuex. El problema es que la función de inicio de sesión es asíncrona, por lo tanto, cuando se ejecutan las protecciones del enrutador, la información del usuario aún no está disponible. Para que funcione, llamé a la función de inicio de sesión dentro de una función asíncrona anónima y puse los guardias dentro de then bloque. Como no encontré ejemplos de este enfoque en Internet, me gustaría saber si es correcto o si hay una mejor manera de manejar este problema. Gracias a todos de antemano.

Aquí hay un ejemplo de mi código de enrutador:

 ... router code (async function() { // get user data and saves them in the vuex store await userService.initUserData(); })().then( function() { const isAuthenticated = store.getters.getIsAuthenticated; const userRole = store.getters.getUserRole; router.beforeEach((to, from, next) => { // check if user is logged in, // if not redirect to login page (LoginPage) if (to.name !== 'LoginPage' && !isAuthenticated) { next({ name: 'LoginPage' }); } else { if (to.meta.customerAuth) { if (userRole === 'Customer') { next(); } else if (userRole === 'Admin') { next({ name: 'AdminView' }); } else { next({ name: 'LoginPage' }); } } else if (to.meta.adminAuth) { if (userRole === 'Admin') { next(); } else if (userRole === 'Customer') { next({ name: 'CustomerView' }); } else { next({ name: 'LoginPage' }); } } } }) } );
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debe conservar la información de su usuario en el almacenamiento local para que no necesite obtener permisos cada vez que actualice la página.

Lo que puede hacer si los permisos cambiaran para la validez de un token es devolver un código HTTP 401 que cerraría la sesión y redirigiría para iniciar sesión para obtener un nuevo token con los nuevos permisos.

A medida que almacena su información de usuario en el almacenamiento, no necesita esperar para configurar sus guardias.

El punto es: el inicio de sesión solo debe ocurrir una vez, si actualiza no debería tener que iniciar sesión nuevamente

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda