Aaron Paredes Cabrera
Franklin Gil
Muchas aplicaciones hoy en día requieren de un Login para identificar al usuario y que pueda interactuar con la plataforma.
Login de Usuarios
Veamos a continuación buenas prácticas para el manejo de sesiones con Angular.
1. Interfaces para tipado de datos
Comencemos creando algunas interfaces para conocer y tipar la estructura de los datos.
// interfaces/user.interface.ts export interface Credentials { email: string; password: string; } export interface Login { access_token: string; } export interface User { id: string; email: string; password: string; name: string; }
Hemos creado tres interfaces. *
2. Servicio para el manejo del Login
Crea un simple servicio que manejará todo lo relacionado con inicios de sesión de los usuarios.
// services/auth.service.ts import { Credentials, Login, User } from 'src/app/interfaces/user.interface'; @Injectable({ providedIn: 'root' }) export class AuthService { constructor(private http: HttpClient) { } loginUser(credentials: Credentials): Observable<Login> { return this.http.post<Login>(`https://example.com/api/login`, credentials); } }
3. Inicio de sesión desde el componente
Desde el componente que contiene el formulario de login, realizamos el inicio de sesión del usuario.
// components/login/login.components.ts import { Component } from '@angular/core'; import { AuthService } from 'src/app/services/auth.service'; import { Credentials, Login, User } from 'src/app/interfaces/user.interface'; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'] }) export class LoginComponent { constructor(private auth: AuthService) { } loginUser(): void { const credentials: Credentials = { email: 'user@gmail.com', password: '123456', }; this.auth.loginUser(credentials) .subscribe((res: Login) => { localStorage.setItem('platzi_token', res.access_token); }); } }
En este ejemplo, efectuamos el login de un usuario con su email y password. El backend suele devolver el token de autenticación del usuario o un access_token. Lo guardamos en Local Storage o en el store que sea de tu preferencia.
NOTA: Existen diferentes tipos de Tokens para autenticar usuarios. Uno de los más comunes es Json Web Token o JWT.
Contribución creada por: Kevin Fiorentino.
Aaron Paredes Cabrera
Franklin Gil
Emilio Nicolás Mendoza Patti
Carlos Dugarte
Jorge Luis Vilca Venegas
Darwing Steven Sánchez Londoño
Kevin Fiorentino
freddy conto mena
Julian Franco
Luis Eduardo Lerena Pereira
uRieL Martinez Bautista
freddy conto mena
Gustavo Jiménez Liévano
Jimmy Buriticá Londoño
Fredy Daniel Flores Lemus
Juan Esteban Orozco Botero
David Castro
Carlos José Esguerra Tavera
Segundo Juan
Luzan Muga
emely dayanna tarazona perez
Jimmy Buriticá Londoño
Juan Casas
Pablo César Silva Espinoza
Patrick Feeney
Michaell Joel Reyes
Josue David
Arturo Baduna
Cristhian Camilo Suarez Vanegas
Luis Enrique Partida Vega
José B. Méndez Padín
Javier Alejandro Mota
Hoy acabo el curso!!! Ya falta poco!
se puso bueno
No se hace cuando salio este curso, pero me pregunto porque no lo tome antes es buenisimo, siento que todo programador no tan solo angular deberia tomarlo 🤩
Literalmente cierto!!
totalmente bro, pienso lo mismo :D!
Recuerden que si estan siguiendo el curso, deben inciar el server desde consola como
npm run start:proxy
ya que seguimos en hambiente de desarrollo y estamos utilizando proxy.
Recomiendo investigar el servicio de Autenticación de Firebase. Funciona con JWT y ya trae implementado todo lo necesario. Login, logout, validación de email, recuperar contraseña, etc. Además, es totalmente gratuito, puedes tener miles de usuarios y no pagar nada. Ideal para proyectos que tienen que desarrollarse rápido y no hay tiempo, o ganas, de desarrollar todo un backend que administre usuarios.
no todas las empresas se adaptan a ese modelado de datos en la nube y claro por costos si tu crecimiento es horizontal ya van por AWS con spring boot, node , apis php o Django, Graph igual no es dificil agregar JWT
Recuerden que a dia de hoy Marzo 2023 la URL Correcta es la del fakeStore de platzi.
Documentacion AQUi
La URL para el post seria esta "https://api.escuelajs.co/api/v1/auth/login"
Y adicional es importante que tengan en cuenta que cuando envien el BODY vaya en formato JSON si no les va a arrojar un error de 401

Seria bueno notificar al usuario cuando se ha restructurado un curso y el usuario lo ha tomado.
este curso es de hace 3 o 4 años no cambiara y no creo que hagan mas de angular
Cuál es la mejor manera de almacenar ese token en nuestro cliente?
En la próxima clase el profesor explica como almacenar el Token con la ayuda de un servicio.
Esta clase estuvo buenisimaaaaa!!!!!
les recomiendo que user Auth0 , es un sistema ya muy implementado y es gratuito hasta muchos usuarios. https://platzi.com/cursos/autenticacion-oauth/
Ok, gracias compañero Juan por el aporte!
Buenos días no puedo obtener el token, revisé en el Swagger y el método post para obtenerlo no trae parámetros y siempre sale 401,que debo hacer
que son las siglas DTO?
Hola Juan,
DTO quiere decir Data Transfer Object o en español Objeto de transferencia de datos.
Saludos! :)
Nico se volvio mi unica compañia, lo veo todo el dia
Ya obtuvimos el Token, ahora veamos como lo debemos enviar para autenticarnos en la API
Pense que hacer un login era complicado pero con esta clase es super sencillo :)
API de Platzi actualizada: https://fakeapi.platzi.com/en/rest/auth-jwt/
Se debe actualizar... las urls son distintas........ un saludo.
Estoy intentando hacer el login , pero me devuelve un error 401, además en la documentación de la API en Swagger el endpoint para hacer login no recibe parámetros
URL que utilice = https://young-sands-07814.herokuapp.com/api/auth/login
Estoy teniendo el mismo problema y si me aparece que se agrego mi usuario, pero al hacer login recibo el mismo error. Ya revise la ruta y todo…
An unhandled exception occurred: Collection "@angular-eslint/schematics" cannot be resolved ```alguien le salto este error?
Hola! al hacer petición POST para tratar de logear un usuario me regresa 401 así ingrese correctos los datos, nunca devuelve el token. ¿Está fallando el API? gracias!
¿Sigues teniendo el problema?
La url tiene que terminar en /api/auth/login.
Hola, en Users.service.ts me dice que la propiedad Api_URL no existe en el tipo production:boolean