Descripción
Este reto está diseñado para profundizar tu comprensión sobre los interceptores HTTP en Angular, centrándose en una parte crucial de la seguridad y gestión de sesiones en aplicaciones web: el manejo adecuado de tokens de autenticación expirados. El objetivo es crear un interceptor que no solo añada un encabezado de autorización a las peticiones HTTP salientes, sino que también detecte cuando un token ha expirado y tome medidas adecuadas, como redirigirlo a la página de inicio de sesión para que pueda autenticarse nuevamente.
Crea un interceptor que no solo añada un encabezado de autorización con el token a las peticiones HTTP salientes, sino que también maneje situaciones en las que el token haya expirado.
Instrucciones:
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
- Inyecta un servicio de autenticación (AuthService) y un router (Router) de Angular en tu interceptor.
- En el método intercept, obtén el token de autenticación utilizando el servicio AuthService.
- Si el token existe y es válido, clona la petición para añadir el encabezado Authorization con el valor del token.
- Si el token está expirado, limpia el token y utiliza el Router para redirigir al usuario a la página de inicio de sesión. Además, retorna un Observable que finalice la cadena sin enviar la petición HTTP original. . Esto se puede hacer usando el operador
EMPTY
de RxJS.
Código base para empezar y completar:
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable, EMPTY } from 'rxjs';
import { AuthService } from './auth.service';
import { Router } from '@angular/router';
@Injectable()
export class AuthExpiredInterceptor implements HttpInterceptor {
constructor(private authService: AuthService, private router: Router) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const authToken = this.authService.getToken(); // Método ficticio para obtener el token
// Si el token existe y es válido, modifica la petición para añadir el encabezado de autorización
// Si el token ha expirado, limpia el token y redirige al usuario a la página de inicio de sesión
// Retorna EMPTY para finalizar la cadena de observables
}
// Si no hay token, simplemente pasa la petición sin modificar
}
}
Solución al ejercicio de programación en Angular
¡Desbloquea la solución completa!
Completa el ejercicio de programación en Angular para acceder a la solución paso a paso, explicaciones detalladas y mejores prácticas.
Practica con ejercicios de programación en Angular
Mejora tus habilidades con cientos de ejercicios de práctica, recibe retroalimentación instantánea y obtén tu certificación cuando estés listo.
Asistente de IA
Aprende de tus errores
Progreso
Mide tu avance
Certificación
Valida tus habilidades
Únete a miles de desarrolladores mejorando sus habilidades en Angular