Implementación de Login
Clase 25 de 38 • Curso de Desarrollo de APIs con Sails.js
Contenido del curso
Comenzando con Sails
Setup de Espacio de Trabajo
CRUD
- 10

Entendiendo operaciones CRUD
05:09 min - 11

Crear modelo de rodada
07:43 min - 12

Crear app de Ionic
11:42 min - 13

Obtener todas las Rodadas: preparando la aplicación para mostrar datos
14:52 min - 14

Obtener todas las Rodadas: mostrando los datos
14:25 min - 15

Crear Rodada: recibiendo parámetros desde la URL
12:29 min - 16

Crear Rodada: enviando información desde el formulario
12:41 min - 17

Actualizar Rodada
12:17 min - 18

Eliminar Rodadas
04:55 min
Autenticación y Usuarios
Sistemas Externos
- 26

Uso de JSON Web Token
10:23 min - 27

Policies: verificar si usuario está loggeado
11:53 min - 28

Agregar usuario a Ride
09:48 min - 29

Preparando la App para implementar el Login y Sign up
11:01 min - 30

Implementando Login
15:04 min - 31

Implementando Sign up
09:35 min - 32

Agregar puntos de Rodada
15:20 min - 33
Obtener API Keys para Clima y Distancias
00:56 min - 34

Integración Google Geocoding: definiendo la lógica
14:57 min - 35

Integración Google Geocoding: probando la funcionalidad
06:14 min - 36

Integración Weather API
13:05 min - 37

Desplegar clima, distancia y tiempo en cada punto de Rodada
06:08 min
Cierre
¿Cómo se garantiza la seguridad al almacenar contraseñas?
El almacenamiento seguro de contraseñas es una de las principales preocupaciones al desarrollar aplicaciones que manejan datos de usuarios. En la clase pasada, se explicó la importancia de no guardar contraseñas en texto plano, sino en su versión cifrada. Así se protege cuando se accede a nuestra plataforma, asegurando que las contraseñas originales no puedan ser expuestas. Ahora aprenderemos a implementar un método de inicio de sesión (login) utilizando contraseñas cifradas.
¿Cómo implementar un método de inicio de sesión con autenticación?
El proceso de inicio de sesión requiere validar simultáneamente el correo electrónico y la contraseña cifrada del usuario, asegurando su autenticidad. Vamos a guiarnos por el siguiente procedimiento:
-
Configuración Inicial en Postman:
- Corregir cualquier error al configurar los parámetros de autenticación para no mostrarlos directamente en la URL.
- Cambiar dichos parámetros a la opción
form-dataen Postman.
-
Implementación del Login en el Código:
- Copiar y adaptar el código del registro de usuarios para reutilizar las validaciones necesarias.
- Eliminar partes no necesarias y conservar el método para verificar correo y contraseña cifrada.
-
Verificación de Existencia del Usuario:
- Utilizar
findOnepara buscar la existencia del usuario por correo.const user = await Users.findOne({ where: { email: req.body.email } }); if (!user) { return res.status(404).json({ error: 'User not found' }); }
- Utilizar
-
Comparación de Contraseñas:
- Comparar la contraseña proporcionada con la almacenada cifra.
const passwordMatch = await bcrypt.compare(req.body.password, user.password);
- Comparar la contraseña proporcionada con la almacenada cifra.
-
Aplicación del Operador Ternario:
- Utilizar un operador ternario para manejar la lógica de retorno, minimizando líneas de código.
passwordMatch ? res.status(200).json(user) : res.status(401).json({ error: 'Not authorized' });
- Utilizar un operador ternario para manejar la lógica de retorno, minimizando líneas de código.
¿Cómo manejar la unicidad de registros en la base de datos?
Inconvenientes como registros duplicados pueden surgir en las bases de datos. Examinemos cómo abordar esto:
- Definición de Restricciones de Unicidad:
- Ajustar el modelo de base de datos para mantener unicidad en correos electrónicos.
email: { type: String, unique: true }
- Ajustar el modelo de base de datos para mantener unicidad en correos electrónicos.
- Resolución de Errores por Entradas Duplicadas:
- En caso de errores al inicializar la base de datos, debido a registros preexistentes duplicados, elimínelos y reinicie la base de datos.
¿Qué cambios implementar para autenticar usuarios más allá del inicio de sesión?
Aunque el método básico de login es funcional, no es suficiente para operaciones que requieren autenticación continuada. La solución es implementar JSON Web Tokens (JWT).
- Uso de JSON Web Tokens (JWT):
- En lugar de devolver el objeto usuario completo, devuelve un token JWT que representa la sesión del usuario autenticado.
- Este token será enviado en posteriores solicitudes como prueba de la identidad del usuario, simplificando la autenticación en llamadas subsecuentes a la API, como crear, leer, modificar o eliminar datos.
Este enfoque modular y seguro no solo protege la información sensible de los usuarios, sino que también simplifica el manejo de la autenticación. En futuras clases, exploraremos cómo implementar JWT para sacar el máximo provecho de estas técnicas avanzadas de seguridad.