0
「/ changepassword」のGETリクエストを実装しようとするMEANアプリケーションがあります。このファイルは '/ users/changepassword'にあります。私はパスワードハッシュのためにMongooseとbcryptjsを使用しています。以下の私のコードを見てください。パスワードを変更するパスワードを変更しないリクエストを取得する
これは、これは、内/モデル位置マングースのCHANGEPASSWORD関数である/ユーザー/ CHANGEPASSWORD
// Change Password
router.post('/changepassword', function(req, res){
var username = req.body.username;
var password = req.body.oldPassword;
var newPassword = req.body.newPassword;
User.getUserByUserName(username, function(err, user){
if(err) throw err;
if(user === null){
res.json({success: false, msg: "The given username does not exist."});
}else{
User.comparePassword(password, user.password, function(err, isMatch){
if(err) throw err;
if(isMatch)
{
User.changePassword(user, newPassword,function(err, changedPassword){
if(err) throw err;
else{
if(changedPassword === true){
res.json({success: true, msg: "Your password has been changed."});
}
else {
res.json({success: false, msg: "Your password was unable to be changed."});
}
}
});
}
});
}
});
});
ある/ユーザここ
module.exports.changePassword = function(user, newPassword, callback){
var query = {username: user.username};
bcrypt.genSalt(10, function(err, salt){
bcrypt.hash(user.password, salt, function(err, hash){
if (err) throw err;
else{
user.password = hash;
User.findOneAndUpdate(query, { $set: { password: user.password }}, {new: true}, function(err, newUser){
if(err) throw err;
else{
bcrypt.compare(newPassword, newUser.password, function(err, isMatch){
if(err) throw err;
console.log(isMatch);
callback(null, isMatch);
});
}
});
}
});
});
};
は/モデル/ユーザ
で使用される全ての他の関数でありますmodule.exports.getUserByUserName = function(username, callback){
var query = {username: username};
User.findOne(query, callback);
};
module.exports.comparePassword = function(candidatePassword, hash, callback){
bcrypt.compare(candidatePassword, hash, function(err, isMatch){
if(err) throw err;
callback(null, isMatch);
});
};
私は郵便番号を使用すると、これは私が受け取った出力です
{
"success": false,
"msg": "Your password was unable to be changed."
}
ご協力いただきありがとうございます。 :)