Я следую курсам NodeJS, Angular и MongoDB (я не могу спросить учителя), в которых я занимаюсь разработкой веб-страницы / API Musi c и застрял в знаке вверх - частично войдите, первый работает отлично, потому что когда я пробую это с Почтальоном, все данные отображаются прямо в базе данных, но когда я хочу войти в систему с теми же данными, я получаю каждый раз ответ 402, хотя данные это то же самое, что я использовал при регистрации. Пароль сохраняется как Ha sh с использованием bcrypt, после чего он должен быть расшифрован с помощью bcrypt.compare. Скажите, что может быть не так в этом, я не очень много практикуюсь с этими технологиями, но я не могу найти ответы.
Глобальный код:
'use strict'
let bcrypt = require('bcrypt-nodejs')
let user = require('../models/user')
Код регистрации:
function saveUser(req, res) {
let usr = new user();
//se recolectan los datos del cuerpo de la petición
let param = req.body;
console.log(param);
usr.name = param.name;
usr.surname = param.surname;
usr.email = param.email;
usr.role = "ROLE_USER";
usr.image = "null";
//saves in db
if (param.password) {
bcrypt.hash(usr.password, null, null, function(err, hash) {
usr.password = hash;
if (usr.name != null && usr.surname != null && usr.email != null) {
usr.save((err, userStored) => {
if (err) {
res.status(500).send({ message: "Error al guardar el usuario." });
} else {
if (!userStored) {
res.status(404).send({ message: "Ha ocurrido un error" });
} else {
res.status(200).send({ user: userStored });
}
}
});
} else {
res.status(200).send({ message: "Introduce los datos que faltan." });
}
});
} else {
res.status(200).send({ message: "Introduce la contraseña" });
}
}
Код входа:
function loginUser(req, res) {
let param = req.body;
user.findOne({ email: param.email }, (err, datos) => {
console.log(user);
if (err) {
res.status(500).send({ message: "Error en la petición." });
} else {
if (!datos) {
res.status(404).send({ message: "El usuario no existe" });
} else {
bcrypt.compare(param.password, user.password, function(err, check) {
if (check) {
if (param.gethash) {
//devolver un token de jwt
} else {
res.status(200).send({ hola: datos });
}
} else {
res.status(402).send({ message: "Credenciales no correctas." }); //Este es el mensaje que me devuelve todo el tiempo
}
});
}
}
});
}