尝试在数据库中存储哈希用户名

时间:2016-04-19 19:23:23

标签: javascript angularjs mongodb hash md5

我正在尝试使用JavaScript-MD5插件散列用户名,然后将其存储到数据库以与Jdenticon一起使用。我可以使用var hash = md5($scope.username);对密码进行哈希并将其记录到控制台,但无法将其传递给我的newUser变量。

  1. 注册控制器

    $scope.register = function(){
    var hash = md5($scope.username);
    console.log(hash);
    var newUser = {
      email: $scope.email,
      password: $scope.password,
      username: $scope.username,
      userHash: hash
    };
    
    $http.post('/users/register', newUser).then(function(){
      $scope.email = '';
      $scope.password = '';
      $scope.username = '';
      userHash = '';
    };
    
  2. 注册路线:

    app.post('/users/register', function(req, res) {
    
      bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(req.body.password, salt, function(err, hash) {
          var user = new User({
            email: req.body.email,
            password: hash,
            username: req.body.username,
            userHash: req.body.userHash
          });
          console.log(user);
    
          user.save(function(err) {
             if (err) return res.send(err);
    
             return res.send();
          });
        });
      });
    });
    

1 个答案:

答案 0 :(得分:1)

我猜您的userHash模型中可能遗漏了User属性,这就是您无法在数据库中存储userHash的原因。

因此,您应该先在userHash模型中加入User,然后才能正常工作。

像:

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var UserSchema= new Schema({
    username : {
        type: String,
        required: true
    },
    email: {
        type: String
    },
    password: {
        type: String
    },
    userHash:{
        type: String
    }
});
mongoose.model('User', UserSchema);