Clase 3 de 6 • Laboratorio de Node.js: Autenticación y Seguridad
Contenido del curso
Diego Vergara
Phillip Leonardo Cabrera Medrano
Eduardo Loeza
oscar Ivan Toro Gonzalez
bcrypt.hashSync y bcrypt.compareSync, se ejecute de manera sincrona y genera el salting automaticamente.
const rounds = 10 function hashPassword(password) { const hash = bcrypt.hashSync(password,rounds) return hash } function matchWithHash(password,hash) { const isValidate = bcrypt.compareSync(password,hash) return isValidate }
Para los que tenga problemas al momento de hacer las peticiones ya sea con POSTMAN u otro software de HTTP Request, aveces es necesario instalar la biblioteca bcrypt con una versión en específica.
npm install bcrypt@5.0.0.
Esto ocurre generalmente para los que tenemos un macOS inferior a catalina
Usando bcrypt para las contraseñas
async (request, response) => { try { const errors = validationResult(request); if (!errors.isEmpty()) { return response.status(400).json({ errors: errors.array() }); } const { username, password } = request.body; //encriptar password para seguridad const encryptedPassword= await bcrypt.hash(password, 10) //guardar la password que sera encriptada en la db const user = await UserModel.create({ username, password: encryptedPassword }); return response .status(201) .json({ username: user.username, createdAt: user.createdAt });
En carpeta helpers crear uno para firmar los tokens
import jwt from "jsonwebtoken" export const generate_jwt = (id,username) =>{ try { const token = jwt.sign({id:id,username:username,}, process.env.SECRET, {expiresIn:60*8}) return token } catch (error) { console.log(error) } }
creamos un middleware para validar el token en los headers
export const require_token = (req,res, next)=>{ try { let token = req.headers.authorization if(!token){ throw new Error("No hay token en el header, no tienes acceso a esta ruta, usa Bearer") } token= token.split(" ")[1] const payload = jwt.verify(token, process.env.SECRET) console.log(payload) next() } catch (error) { return res.status(401).json({ error: error.message }) } }
despues lo usamos
profile.use('/', require_token,viewUser);
Para resolver problemas de seguridad y completar un sistema de registro de usuarios en Node.js, es fundamental aprender sobre:
Te recomiendo explorar cursos de Platzi que cubran temas de desarrollo backend, Node.js y seguridad web. Esto te dará una base sólida para enfrentar los desafíos que mencionas.