如何生成哈希密码并将其存储在sails.js中的数据库中

时间:2018-04-06 13:37:00

标签: node.js sails.js

我想创建新用户并保存到我的数据库中的用户表中 我的行为如下:

create: function(req,res,next){
    bcrypt.hash(req.param('password'),10,function (err, hashed) {
        if (err) {
          console.log("4");
          return res.serverError({'err': 'hash Error!'});
        } else{
                User.create({
                  username: req.param('username'),
                  password: hashed,
                  type: req.param('type')
                },function (err, created_user) {
                      if (err) {
                        err = validator(User, err);
                        return res.json({'status': false, 'errors': err.Errors});
                      }
                      return res.json({'status': true, 'result': created_user});
                }
      );
            }

    }
}  

我的用户模型是:

module.exports = {

属性:{     用户名: {       键入:' string',       要求:是的,       独特:真实     },

password: {
  type: 'string',
  required: true
},

type: {
  type: 'number',
  columnType: 'integer'
},

last_x_map: {
  type: 'number',
  columnType: 'float'
},

last_y_map: {
  type: 'number',
  columnType: 'float'
},

places :{
  collection: 'place',
  via: 'user_owner'
},

},
validationMessages: {

username:{
  required: '...',
  alphanumericdashed: '...',
  unique: '...'
},

password: {
  required: '...'
}

},

但它总是返回虚假而且没有任何东西。

问题出在哪里?
或者你对此有何看法?
非常感谢。

1 个答案:

答案 0 :(得分:0)

我的sails.js 版本是1.4.0

  • 这个"sails-hook-organics": "^2.0.0",是提供sails.js 密码助手来散列和检查散列密码的依赖项

  • 此代码将用户的散列密码存储在 Users 数据存储区中:

    var newUserRecord = await Users.create({
      name: name,
      email: newemail,
      password: await sails.helpers.passwords.hashPassword(password),
    })
      .intercept('E_UNIQUE', 'emailAlreadyInUse')
      .intercept({ name: 'UsageError' }, 'invalid')
      .fetch();
  • 使用以下代码检查密码:
    var userRecord = await Users.findOne({
      email: email.toLowerCase(),
    });
    await sails.helpers.passwords.checkPassword(password, userRecord.password)
      .intercept('incorrect', 'badCombo');
    return this.res.redirect('/dashboard');

如果您的密码与散列密码不匹配,则会出现 badcombo 错误,否则会重定向到仪表板