簡體   English   中英

無法獲取哈希密碼以使用bcrypt保存

[英]Can't get the Hash password to save with bcrypt

我試圖使用sequelize,bcrypt和express保留哈希密碼。 哈希確實會生成,但是看起來好像在生成哈希值之前發生了數據庫條目。 我是NodeJS的新手,所以我的知識還不那么豐富。

user.js

var bcrypt = require('bcrypt');

module.exports = function(sequelize, DataType){

  var User = sequelize.define('User', {
    name: DataType.STRING,
    localPassword: DataType.STRING,
    lastName: DataType.STRING,
    localEmail: DataType.STRING,
    cellNumber: DataType.INTEGER
  },
      {
        instanceMethods: {
          validPassword: function(password){
              return bcrypt.compareSync(password, this.password);
          }
        },
          classMethods: {
              generateHash: function (password) {
                  return bcrypt.hash(password, 8, function(err, hash){
                      if(err){
                          console.log('error'+err)
                      }else{
                          return hash;
                      }
                  });
              }
          }
      }

  );

    return User;
};

路線/index.js

router.post('/register', function(req, res){
  var name = req.body.name;
  var lastName = req.body.lastName;
  var email = req.body.email;
  var cellNumber = req.body.cellNumber;
  var password = model.User.generateHash(req.body.password);
  model.User.build({name: name, lastName: lastName, localEmail: email, cellNumber: cellNumber, localPassword: password}).save();

});

除哈希密碼外,所有值都保留在數據庫中。 任何幫助將不勝感激。

這里的問題是,您使用的是異步bcrypt.hashmodel.User.build執行前bcrypt哈希密碼。 您在這里有幾個選擇,可以使用同步bcrypt.hashSync; 或執行model.User.build調用作為承諾

model.User.generateHash(req.body.password).then(function(data){
   ...
})

您可以使用bcrypt-then

npm install bcrypt-then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM