RECORDAR que cuando se hacen cambios en las variables de entorno se debe reiniciar el servidor para que se apliquen esos cambios
Introducción
Cómo autenticar usuarios con Node.js
Autenticación vs. autorización
Tienda en línea: instalación del proyecto
Protección de contraseñas
Middleware de verificación
Hashing de contraseñas con bcryptjs
Implementando hashing para usuarios
Passport y JSON Web Tokens
Implemetando login con Passport.js
¿Qué es un JWT?
Firmar y verificar tokens
Generar JWT en el servicio
Protección de rutas
Control de roles
Obteniendo órdenes del perfil
Manejo de la autenticación desde el cliente
Envío de emails con Node.js
Cómo enviar emails con Node.js
Implementando el envío de emails
Recuperación de contraseñas
Generando links de recuperación
Validando tokens para cambio de contraseña
Despliegue a producción
Deploy en Heroku
Próximos pasos
Cómo seguir aprendiendo backend con Node.js
Crea una cuenta o inicia sesión
¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera
Aportes 4
Preguntas 1
RECORDAR que cuando se hacen cambios en las variables de entorno se debe reiniciar el servidor para que se apliquen esos cambios
recordemos hacer nuestras validaciones estilos first error, es una buena practica
ejemplo de mi codigo:
const boom = require('@hapi/boom'),
config = require('./../config/config')
class Auth {
static chackApiKey(req, res, next) {
const apiKey = req.headers['api'];
if (!apiKey) {
return next(boom.unauthorized('Unauthorized'));
}
if (apiKey !== config.apiKey) {
return next(boom.unauthorized('Unauthorized'));
}
return next();
}
}
module.exports = Auth;
Se crea un middleware para hacer verificaciones. es decir, una capa de autenticación.
El middleware tendrá al siguiente lógica:
if (req.headers['api'] === '123') {
next();
} else {
next(boom.unauthorized());
}
Es decir, en los headers se enviará una api con un valor (api key) que deberá ser igual a un valor o una variable que esté manejada por las variables de entorno. Si todo es correcto hará next()
, es decir, dejamos que ingrese a la capa de servicios o ejecutar los siguientes middlewares, de lo contrario arrojará un error unauthorized
.
Para ello se crea el siguiente middleware auth.handler.js
:
const boom = require('@hapi/boom');
const { config } = require('./../config/config');
function checkApiKey(req, res, next) {
const apiKey = req.headers['api'];
if (apiKey === config.apiKey) {
next();
} else {
next(boom.unauthorized());
}
}
module.exports = { checkApiKey };
La apiKey
viene de los headers con el nombre de api
. Como buena practica, la API Key que configuremos estará en el archivo de variables de entorno .env
:
PORT=3000
DATABASE_URL='postgres://john:[email protected]:5432/my_store'
API_KEY=321456
Posteriormente se agrega al archivo config/config.js
para poder leerla y permitir que cualquier cliente se conecte a nuestra aplicación desde maquina a maquina:
require('dotenv').config();
const config = {
env: process.env.NODE_ENV || 'dev',
isProd: process.env.NODE_ENV === 'production',
port: process.env.PORT || 3000,
dbUrl: process.env.DATABASE_URL,
apiKey: process.env.API_KEY,
};
module.exports = { config };
Esta clase es una obra maestra
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.