有人可以帮我弄清楚为什么bcrypt.compareSync
功能对我的情况不起作用:
模型/ patient.js
const bcrypt = require('bcryptjs');
module.exports = (sequelize, Sequelize) => {
const Patient = sequelize.define('Patient', {
email: {
type: Sequelize.STRING,
allowNull: false,
},
password: {
type: Sequelize.STRING,
allowNull: false,
},
}, {
classMethods: {
associate: (models) => {
// associations can be defined here
}
},
instanceMethods: {
//
verifyPassword: function(password,hash) {
bcrypt.compareSync(password,hash);
}
}
});
return Patient;
};
controllers / patients.js已编辑
retrieve(req, res) {
return Patient
.find({
where: {
email: req.body.email,
}
})
.then(patient => {
const result = Patient.build().verifyPassword(req.body.password, patient.password);
if (!result) {
console.log('wrong password')
} else return res.status(201).send(patient);
})
}
我的请求应该返回与请求中输入的电子邮件和密码相对应的患者,但它返回:
编辑:错误问题已解决,但仍然收到错误结果(即使我使用正确的密码发出请求,也会返回错误的密码'字符串)。
答案 0 :(得分:0)
您忘了从verifyPassword
返回任何内容。
verifyPassword: function(password,hash) {
return bcrypt.compareSync(password,hash);
}
如果密码正确,它将返回true
,否则false
。