在localhost上工作时,bcrypt登录不在生产中

时间:2017-04-18 17:46:53

标签: node.js bcrypt passport-local

我使用了如下的用户模型: usermodel使用bcrypt身份验证,并且在localhost上工作正常。 在生产中,注册工作正常,并且在注册用户时登录。但是,在登录时它会给出错误"用户名或密码错误"。

var mongoose              = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var bcrypt                = require('bcrypt-nodejs');
var userSchema            = new mongoose.Schema({
    username: {type: String, required: true, unique: true},
    email  : {type: String, required: true, unique: true},
    password  : {type: String},
    twitterId : String,
    twitterToken: String,
    profileUserName: String,
    displayName : String,
    coachingUser: Boolean,
    coaching_name: String,
    resetPasswordToken: String,
    resetPasswordExpires: Date
});
userSchema.plugin(passportLocalMongoose);

userSchema.pre('save', function(next) {
  var user = this;
  var SALT_FACTOR = 5;
  console.log("in the presave method");
  if (!user.isModified('password')) 
    {
        //console.log("in the presave method");
        return next();
    }

  bcrypt.genSalt(SALT_FACTOR, function(err, salt) {
    if (err) return next(err);
    bcrypt.hash(user.password, salt, null, function(err, hash) {
        console.log("in the presave method");
      if (err) return next(err);
      user.password = hash;
      next();
    });});});
userSchema.methods.comparePassword = function(candidatePassword, cb) {
    console.log("candidatePassword: " + candidatePassword);
    console.log(this.password);
    var passlen = this.password;
console.log("password length: " + passlen.length);
  bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
    console.log("isMatch: " + isMatch);
    if (err) return cb(err);
    cb(null, isMatch);
  });
};`
module.exports  = mongoose.model("User",userSchema);

在localhost中,bcrypt登录工作正常。但是,在https://mlab.com/home和digitalocean之外的生产中,登录始终提供电子邮件或密码不正确。

router.post('/login', function(req, res, next) {
    console.log(req);
  passport.authenticate('local', function(err, user, info) {
    if (err) return next(err)
    if (!user) {
        //console.log(user);
        req.flash("error", "Either Username or Password is wrong");
      return res.redirect('/login');
    }
    req.logIn(user, function(err) {
      if (err) return next(err);

      {
        //console.log(user);
        req.flash("success","Successfully logged in as " + user.username);
        res.redirect('/coaching');
    }
    });
  })(req, res, next);
});

请提供帮助,说明为什么在生产中特定逻辑不起作用

0 个答案:

没有答案