使用护照JS在Node.js中进行密码验证

时间:2019-01-21 15:37:16

标签: node.js passport.js

我正在使用护照js本地策略进行身份验证和nodejs。问题是当我尝试使用错误的密码登录时,我仍然重定向到成功页面。

我该怎么办

这是登录策略

 const passport = require('passport')
 const LocalStratery = require('passport-local').Strategy;

 const User = require('../models/userAuth')

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

 // used to deserialize the user
 passport.deserializeUser(function(id, done) {
   User.findById(id, function(err, user) {
    done(err, user);
  });
});

passport.use('local-login', new LocalStratery({
  usernameField: 'email',
  passwordField: 'password',
  passReqToCallback: true
   }, function(req, email, password, done) {
     console.log(email)
     console.log(password)
      User.findOne({email: email})
     .then((err, user) => {
       if(err) {
        return done(null, err, req.flash('unkonown', 'there was an error, 
    please try after sometime'))
     } 
      if(!user) {
           console.log(user)
           return done(null, false, req.flash('NotExists', 'no user 
         exixts'))
       }
        if(!user.validpass(password)){
             return done(null, false, req.flash('passFail', 'password not 
       matches'))
       }
          if(user) {
            return done(null, user, req.flash('success', 'login success'))
        }
      }) 
      .catch(err => {
       throw err
     }) 
   }))

使用猫鼬的用户模型

  userAuth.methods.excryptPass = function(password) {
     return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null)
 }
 userAuth.methods.validpass = (password) => {
    return bcrypt.compareSync(password, this.password);
  }

0 个答案:

没有答案