Passportjs с postgresql - PullRequest
       17

Passportjs с postgresql

0 голосов
/ 08 февраля 2019

У меня проблемы с passport.authenticate с использованием локальной стратегии, я использую postgresql локально и использую эту стратегию для сравнения и попытки входа в систему:

const LocalStrategy = require('passport-local').Strategy;
const db = require('./config/database.js');
const bcrypt = require('bcryptjs');
const User = require('../models/User');

module.exports = function (passport) {
  passport.use(
    new LocalStrategy({
      usernameField: 'correo'
    }, (correo, contrasena, done) => {
      User.findOne({
          correo: correo
        })
        .then(user => {
          if (!user) {
            return done(null, false, {
              message: 'El correo ingresado no está registrado'
            });
          }
          bcrypt.compare(contrasena, user.contrasena, (err, isMatch) => {
            if (err) throw err;

            if (isMatch) {
              return done(null, user);
            } else {
              return done(null, false, {
                message: 'La contraseña es incorrecta'
              })
            }
          });
        })
        .catch(err => console.log(err));
    })
  );
 passport.serializeUser((user, done) =>{
    done(null, user.id);
  });

  passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) =>{
      done(err, user);
    });
  });

}

Когда я пытаюсь войти, даже если я поставилправильные учетные данные для его аутентификации, я просто получаю перенаправление сбоев из моего маршрута дескриптора входа в систему:

router.post('/login', (req, res, next) => {
  passport.authenticate('local', {
    successRedirect: '/dashboard',
    failureRedirect: '/users/login',
    failureFlash: true
  })(req, res, next);
});

у меня есть промежуточное ПО для сеанса и инициализировано в моем app.js, а также сеанс и, конечно,сериализация и десериализация.

...