Angular2 Redirect después de iniciar sesión
Estoy creando un sistema de autenticación en angular2 con la idea de que si un usuario que no está autenticado intenta navegar a una url "protegida", el sistema redirigirá al usuario a la página de inicio de sesión poniendo en la url un parámetro de consulta llamado "next" "eso ayudará al sistema de inicio de sesión a redirigir al usuario a donde quería estar en primer lugar.
login?next=my-redirect-url
Para proteger mis componentes, estoy usando el decorador@CanActivate(isUserAuthenticated)
en todos ellos. losisUserAuthenticated
La función es algo como sigue:
function isUserAuthenticated(
prevInstr: ComponentInstruction,
nextInstr: ComponentInstruction
): boolean {
const authService = injector.get(AuthService);
const router = injector.get(Router);
if(authService.isLoggedIn()) {
return true;
} else {
router.navigate(["/Login", {next: nextInstr.urlPath}]);
return false;
}
}
Este enfoque no funciona porque elurlPath
propiedad de lanextInstr
no muestra la url "completa" (por ejemplo, carece de parámetros de consulta).
¿Hay alguna manera de construir la url completa desde unComponentInstruction
instancia comonextInstr
?