2017-03-16 55 views
0

有人可以幫助我弄清楚爲什麼bcrypt.compareSync功能不會對我的情況下工作:bcrypt.compareSync不上sequelize工作

型號/ 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; 
}; 

控制器/ patients.js EDITED

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

那麼錯誤是什麼? – zerkms

+0

我的請求沒有任何迴應,但它應該返回與請求中鍵入的電子郵件和密碼相對應的患者。 –

+0

你有'錯誤',你爲什麼不輸出它?永遠不要忽略錯誤,他們是有原因的。 – zerkms

回答

0

你忘了從verifyPassword返回任何東西。現在

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

它將返回true如果密碼是正確的,否則false

+0

是的,它也是,現在的作品,現在謝謝你! –