Tengo un protector de navegación de la siguiente manera:
import authConfig from "./auth.config"; export function authGuard(to,from, next) { const publicPages = [ '/login', '/register', '/home', '/forgotpassword', ]; const authRequired = !publicPages.includes(to.path); const loggedIn = localStorage.getItem(authConfig.USER_LOCAL_STORAGE_KEY); let resetPasswordRequired = true if (authRequired && !loggedIn ) { return next('/login'); } if(loggedIn && resetPasswordRequired) { return next('/resetpassword') } else return next(); }Funciona bien sin el bloque if para resetpassword.
No puedo entender por qué se produce un error de redireccionamiento infinito.
¿Algunas ideas?
Gracias
Actualmente tienes una redirección infinita en:
if(loggedIn && resetPasswordRequired) { return next('/resetpassword') } Como resetPasswordRequired siempre es verdadero debido a let resetPasswordRequired = true y mientras loggedIn cambia a verdadero, su código siempre termina redirigiendo a /resetpassword .
Un enfoque podría ser almacenar información en el almacenamiento local durante el inicio de sesión, si el usuario realmente necesita restablecer su contraseña y configurar esta información como falsa, antes de redirigir.
Otro enfoque sería guardar el estado de resetPasswordRequired en una tienda y cambiar su estado antes de redirigir.
El tercer enfoque sería administrar el proceso de cambio de contraseña en su página de inicio de sesión y recibir información, si el usuario necesita restablecer su contraseña inicial, desde una base de datos durante el inicio de sesión.