bcrypt.compareSync不适用于sequelize

时间:2017-03-16 23:30:39

标签: javascript post ecmascript-6 sequelize.js bcrypt

有人可以帮我弄清楚为什么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);
        })
}

我的请求应该返回与请求中输入的电子邮件和密码相对应的患者,但它返回:

编辑:错误问题已解决,但仍然收到错误结果(即使我使用正确的密码发出请求,也会返回错误的密码'字符串)。

1 个答案:

答案 0 :(得分:0)

您忘了从verifyPassword返回任何内容。

verifyPassword: function(password,hash) {
    return bcrypt.compareSync(password,hash);
}

如果密码正确,它将返回true,否则false