Protección de rutas con Auth Guard en Angular

Clase 19 de 21Curso de Firebase con Angular 20

Contenido del curso

Configuración Inicial y Estructura del Proyecto

Implementación de Autenticación y Chat

Resumen

La vulnerabilidad de la URL del chat queda cerrada al activar un flujo de autorización con Auth Guard y canActivate, vinculado a Firebase. Con un ajuste preciso en App Routes, solo usuarios autenticados acceden; los no autorizados son redirigidos a auth de forma inmediata. Así, el chat deja de estar expuesto y se prepara el terreno para hostear en la nube con confianza.

¿Cómo asegurar la URL del chat con Auth Guard?

El guard se implementa en la carpeta Source/App/Guards y utiliza canActivate para permitir o bloquear el acceso al chat según la autenticación en Firebase. La lógica devuelve un Observable de tipo boolean que, además, registra mensajes con console.log y navega a la ruta auth si no hay sesión activa.

  • Ubicar el guard en Source/App/Guards.
  • Usar canActivate que retorna un Observable.
  • Verificar sesión con un servicio ligado a Firebase.
  • Registrar eventos con console.log.
  • Navegar a auth y devolver false si no hay autenticación.

¿Qué lógica implementa el guard?

  • Si está autenticado: usuario permitido y retorna true.
  • Si no está autenticado: delegado, navega a auth y retorna false.

// guards/guard.ts @Injectable({ providedIn: 'root' }) export class AuthGuard implements CanActivate { constructor(private auth: AuthService, private router: Router) {} canActivate(): Observable<boolean> { return this.auth.isAuthenticated$.pipe( map(isAuth => { if (isAuth) { console.log('usuario permitido'); return true; } console.log('delegado'); this.router.navigate(['auth']); return false; }) ); } }

¿Qué cambios hacer en App Routes para proteger chat?

En App Routes se definen las rutas base y la protección del chat. El camino vacío redirige a auth; existe una ruta auth y una chat; cualquier ruta desconocida también redirige a auth. El único segmento protegido es chat, al que se le agrega canActivate con el guard implementado.

  • Rutas: vacío → auth.
  • Rutas: auth y chat definidas.
  • Rutas: wildcard redirige a auth.
  • Protección: chat con canActivate y el guard propio.
  • Importar el guard correcto desde guards/guard, evitando otros.

¿Cómo se anota canActivate en la ruta chat?

  • Añadir canActivate con el arreglo que incluye el guard.
  • Confirmar que el import corresponde a guards/guard.

// app.routes.ts export const routes: Routes = [ { path: '', redirectTo: 'auth', pathMatch: 'full' }, { path: 'auth', /* ... */ }, { path: 'chat', /* ... */, canActivate: [AuthGuard] }, { path: '**', redirectTo: 'auth' } ];

¿Cómo validarlo en localhost y qué sigue en la nube?

La verificación es directa en localhost: cerrar sesión, intentar entrar al chat por URL y observar la redirección automática a auth. Con la protección activa, el acceso al chat queda restringido a usuarios autenticados y el siguiente paso es hostear la aplicación en la nube con la seguridad ya aplicada.

  • Abrir en localhost y cerrar sesión.
  • Intentar ingresar al chat por URL directa.
  • Confirmar la redirección a auth.
  • Continuar con el despliegue en la nube.

¿Te quedó alguna duda sobre la integración del Auth Guard o la configuración de App Routes? Deja tu pregunta y comparte cómo te fue con Copilot al sugerir canActivate.