Паспорт. js сообщение об ошибке не появляется - PullRequest
3 голосов
/ 18 апреля 2020

У меня есть паспорт. js Аутентификация, и он принимает правильные учетные данные, а не неверные.

Я пытаюсь отобразить всплывающее сообщение с неверными учетными данными.

предпринял многочисленные попытки и следовал документации, но не смог заставить ее работать. Кажется, в нем не так уж много, но я не могу понять это правильно.

Настройка стратегии

var flash = require('connect-flash');

var app = express();
app.use(flash());

passport.use(new Strategy(
  function(username, password, cb) {
    db.users.findByUsername(username, function(err, user) {
      if (err) { return cb(err); }
      if (!user) { return cb(null, false, { message: 'Incorrect password.' } ); }
      if (user.password != password) { return cb(null, false, { message: 'Incorrect password.' }); }
      return cb(null, user);
    });
  }));

Аутентификация - отправка и получение

//Log In Post request
app.post('/login.post',
  passport.authenticate('local', { successRedirect: '/home',
                                   failureRedirect: '/',
                                   failureFlash: 'Invalid log in, please try again' })
);


//Home route
app.get('/home', //Log in Home
  function(req, res) {
   res.render('home', { user: req.user });
 });

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Попробуйте:

// Login Process
router.post("/login", (req, res, next) => {
  passport.authenticate("local", {
    successRedirect: "/",
    failureRedirect: "/auth/login",

    failureFlash: true
  })(req, res, next);
});

Звонить (req, res, next); важно, иначе все это просто застрянет там.

0 голосов
/ 18 апреля 2020

Может, вот так?

app.post('/login',
  passport.authenticate('local', { successRedirect: '/home',
                                   failureRedirect: '/login',
                                   failureFlash: true })
);
...