Implementar autenticación en Angular con Json Web Tokens (JWT) arranca con una base sólida: dos páginas de login y registro, rutas claras y un servicio centralizado de autorización. A continuación se muestra cómo estructurar componentes, maquetar con Bootstrap y preparar un servicio reutilizable, dejando lista la integración posterior con Firebase.
¿Qué construimos para la autenticación con Angular y JWT?
Empezamos creando dos componentes: login y registro. Se duplicó el componente de contacto y se renombraron archivos y selectores para cada caso. Luego, se configuraron rutas en AppModule y se añadió una barra de navegación con enlaces a ambos formularios usando routerLink. Finalmente, se creó un autorizacionService con métodos login y registro, inyectado en los componentes para probar su ejecución con console.log.
Habilidades practicadas: creación de componentes en Angular. Configuración de rutas. Maquetación con Bootstrap. Inyección de dependencias. Uso de services y funciones flecha. Pruebas con console.log.
Conceptos clave: Json Web Tokens (JWT). routerLink. @Injectable. navbar-right. Clases de Bootstrap como container, row, col-md-4, col-md-offset-4, well, btn, btn-primary, btn-default, btn-block.
¿Cómo crear las páginas de login y registro con Bootstrap?
Primero se generó el componente de login, ajustando selector, template y ruta. Luego se maquetó un formulario centrado con la grilla de Bootstrap, y se repitió el proceso para registro.
¿Cómo configurar el componente de login?
Duplicar el componente existente y renombrarlo a LoginComponent.
Actualizar selector a app-login y el templateUrl a login.component.html.
¿Cómo declarar rutas y un servicio de autorización reutilizable?
Se añadieron rutas en AppModule para login y registro. Luego, se incorporó una navbar con enlaces a la derecha y se creó un serviceautorizacion.service.ts con métodos mínimos para probar el flujo.
¿Cómo definir rutas en AppModule?
Agregar rutas login y registro con sus componentes.
Incluir componentes en declarations y el servicio en providers.
¡Hola! Está genial tu solución implementando estilos de Flexbox. Te comento que sí se podría usar el offset, solo que se declara de forma distinta según la documentación de Bootstrap 4:
Sabemos que AppComponent orquesta todos los componentes de nuestra aplicación.
Hay forma de mostrar una ventana LOGIN antes del AppComponent? si los credenciales son correctos recién que pase el control a AppComponent para que orqueste el resto de la aplicación.
Estimados, los expertos en la materia:
La solución que le estoy dando es mostrar mi LOGIN en el appComponent y si los credenciales son correctos, OCULTO el div que contiene a todo el LOGIN y empieza a trabajar el <router-outlet>, las url serán monitoreadas por un GUARD.
Esta solución es la adecuada? no hay riesgo de que ingresen a la aplicación sin loguearse?
Creo que así se ve más presentable y entendible para quienes posteriormente leerán el código (operador ternario)
constructor(privateautorizacionService:AutorizacionService){this.autorizacionService.islogged().subscribe((result)=>{this.bLoggedIn=( result && result.uid)?true:false;},(error)=>{this.bLoggedIn=false;});
Nose si sea lo mejor pero reutilice el mismo componente para login y registro, por medio de la url me traigo la accion solicitada e identico si es login o registro
/**Selector ata a la app
* Template es el html
* styles son los css**/import{ActivatedRoute}from'@angular/router';import{PersonasServices}from'../services/personas.services';import{Component}from'@angular/core';import{AutotizacionServices}from'../services/autorizacion.services';@Component({selector:'app-registro',templateUrl:'./registro.component.html'})exportclassRegisroComponent{constructor(privaterouter:ActivatedRoute,privateautorizacion:AutotizacionServices){this.autorizacion.registro('','','');}}