Par exemple, si je souhaite changer le mot de passe, j'ai un ancien mot de passe et un nouveau mot de passe. La vérification de l'ancien mot de passe est séparée du changement du nouveau mot de passe. Comment puis-je empêcher la modification du nouveau mot de passe ?
router.get('/:userid', function(req, res,next) {
if(req.session.userid){
return next();
}
res.redirect('/login');
});
router.get('/:userid', function(req,res,next){
User.find(req.session.userid,function(err,doc){
res.render('changepassword',{
userid: req.session.userid,
user:doc
});
});
});
router.post("/:userid",function(req,res) {
User.findOne({
name: req.session.userid,
pwd: req.body.oldpwd
}, function (err, doc) {
if (err) {
r.error = err;
return;
}
if (doc) {
console.log('success');
} else {
console.log('fail');
return;
}
res.json(r);
});
});
//不想使得当旧密码验证不成功的时候让以下代码执行
router.post("/:userid",function(req,res) {
var u = {
pwd :req.body.pwd
};
var userid = req.session.userid;
if(userid && '' != userid) {
User.findOneAndUpdate(userid,u,function(err, docs) {
console.log('modify-----'+ docs);
res.redirect('/');
});
}
});
Ajoutez à côté des paramètres de la fonction de rappel. Si la vérification est réussie, スxス sera renvoyé. Si la vérification échoue, l'échec sera renvoyé.
Mais ils peuvent effectivement être ensemble, alors pourquoi les séparer ? Par exemple :Pour référence :
1. router.post("/:userid", function(req,res) {
et
//Nous ne voulons pas que le code suivant soit exécuté lorsque la vérification de l'ancien mot de passe échoue
router.post("/: ID utilisateur", function(req,res) {
Il s'agit d'un routeur en double. Vous devez y mettre le code de traitement suivant (modifier le mot de passe).
2. De plus, vous pouvez envisager password.js pour la gestion des connexions.
Pour référence.
J'adore MongoDB ! Amusez-vous!