护照仅对执行失败进行身份验证

时间:2019-08-01 06:25:10

标签: node.js authentication passport.js

我有一些用于网站登录的代码,但是无论您尝试登录failRedirect后,无论我尝试了什么。请让我知道我做错了什么,因为香港专业教育学院一直在试图修复它,但是没有运气。

/型号/登录代码

module.exports.getUserByUsername = function(username, callback){
    var query = {username: username};
    User.findOne(query, callback);
}

module.exports.getUserById = function(id, callback){
    User.findById(id, callback);
}
module.exports.comparePassword = function(candidatePassword, hash, callback){
    bcrypt.compare(candidatePassword, hash, function(error,  isMatch){
        if(err) throw err;
        callback(null, isMatch);
    });
}

/ routes /登录代码

  passport.use(new LocalStrategy(
    function(username, password, done) {
    User.getUserByUsername(username, function(err, user){
        if(err) throw err;
        if(!user){
            return done(null, false, {message: 'Unkown User'});

        }
        User.comparePassword(password, user.password, function(err, isMatch){
            if(err) throw err;
            if(isMatch){
                return done(null, user);
            } else{
                return done(null, false, {message: 'invalid password'});
            }
        });
    });
    }));

    passport.serializeUser(function(user, done) {
        done(null, user.id);
      });

      passport.deserializeUser(function(id, done) {
        User.getUserById(id, function(err, user) {
          done(err, user);
        });
      });

router.post('/login',
passport.authenticate('local', {successRedirect:'/', failureRedirect:'/dfdsf', failureFlash: true}),
function(req, res){
res.redirect('/');
});

module.exports = router;

有什么问题的想法吗?

0 个答案:

没有答案