Я пытаюсь написать логин для небольшого сайта, этот сайт никогда не выйдет в производство, поэтому я не слишком строг в отношении безопасности.
Я храню данные в MariaDB, номер карты и пин-код являются некоторыми из этих данных. Номер карты зашифрован с использованием Bcrypt
Но при попытке аутентификации я получаю сообщение об ошибке
[0] (node:9282) UnhandledPromiseRejectionWarning: Error: data and hash must be strings
Я console.logging данные, переданные, чтобы увидеть, если они существуют, они хорошо отображаются в консоли. Я также пытался использовать JSON.stringify для данных, полученных из внешнего интерфейса.
код в моем файле аутентификатора
const express = require('express');
const router = express.Router();
const connection = require('../models/loginrouters');
const bcrypt = require('bcrypt');
router.post('/', function(req, res) {
console.log('Starting authentification proccess');
const CardNumber = req.body.cardnumber;
const pin = JSON.stringify(req.body.pin);
connection.query(
'SELECT PIN, CardNumber FROM userCards WHERE CardNumber = ?',
[CardNumber],
function(error, results, fields) {
if (error) {
console.log('error ocurred', error);
res.send({
code: 400,
failed: 'error ocurred'
});
} else {
console.log('The result is: ', results);
console.log('handling pin', pin);
if (results.length > 0) {
console.log('results over 0 is true');
console.log('pin result from query is: ', results[0].PIN);
console.log('pin result from form is: ', pin);
if (bcrypt.compare(pin, 15) == results[0].PIN) {
res.send({
code: 200,
success: 'login sucessfull'
});
} else {
console.log('something went wrong/email and password does not match');
res.send({
code: 204,
success: 'Email and password does not match'
});
}
} else {
console.log('result lenght is 0');
res.send({
code: 204,
success: 'Email does not exits'
});
}
}
}
);
});
module.exports = router;
Я также пытался жестко закодировать данные (pin и results [0] .PIN), но получаю ту же ошибку, полный консольный вывод ошибки можно найти здесь
Есть идеи, где ошибка? Я был бы рад выложить больше кода, если это поможет