2016-09-02 15 views
0

mongooseとmongoDBをデータベースとして使用して、node.jsに簡単なユーザーログインメソッドを書き込もうとしています。新しいユーザーを登録するたびに、これらの資格情報で数回ログインすることができますが、何らかの理由で「無効なパスワード」というエラーが表示されます。どんな助けもありがとう。以下のコードスニペットである:MEANに「無効なパスワード」エラーが表示される

HTMLファイル:

<form> 
    <p>Email: <input type="email" ng-model="LC.logInfo.email" required></p> 
    <p>Password: <input type="password" ng-model="LC.logInfo.password" required></p> 

    <input type="submit" value="Login" ng-click="LC.login()" class="logreg_button"> 
</form> 

user.jsの(モデルファイル)

UserSchema.methods.validPassword = function(enteredPassword){ 
return bcrypt.compareSync(enteredPassword, this.password) 
    } 

UserSchema.pre('save', function(next){ 
var user = this 
bcrypt.genSalt(10, function(err,salt){ 
    if(err) console.log(err); 
    bcrypt.hash(user.password, salt, function(err, hash){ 
     if(err) console.log(err); 
     user.password = hash; 
     next(); 
    }); 
}); 
}) 

users.js(サーバ側制御ファイル)

login: function(req,res){ 
    User.findOne({email: req.body.email}, function(err, user){ 
     if(err) { 
      res.json({status: false, errors:err}); 
     } 
     else if(user){ 
      if(user.validPassword(req.body.password)){ 
       req.session['userInfo'] = { 
       id: user._id, 
       first_name: user.first_name 
       } 
       res.json({status:true, userInfo: req.session['userInfo'] }) 
      } else { 
       res.json({status: false, errors: 'Invalid password!'}) 
      } 
     } else { 
      res.json({status: false, errors: 'User not found!'}) 
     } 
    }) 
}, 

答えて

0

それはloginサービスに関連していません。

パスワードはpre saveフックで生成されます。これは初めてですが、ユーザーが更新する必要がある場合、このフックはパスワードを破損します。

他の方法で処理する必要があります。たとえばpre saveフックでは、ユーザーが新規かどうかをチェックし、新しい場合はパスワードをハッシュします。

関連する問題