Как отобразить сообщение об ошибке в отображаемом виде при неудачной попытке входа в систему с помощью req.flash () паспорта? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь реализовать passportjs для обработки аутентификации.Теперь, как часть постановки проблемы, если вход в систему не удается, я должен перенаправить пользователя обратно на страницу входа с сообщением об ошибке.Но код, который я написал, не может этого сделать, и я не могу найти решение или обходной путь.

Это мои маршруты:

app.get("/login", function(req, res) {
  res.render("loginPage", { message: req.flash("message") });
});

app.post(
  "/handleLogin",
  passport.authenticate("login", {
    successRedirect: "/",
    failureRedirect: "/login",
    failureFlash: true
  })
);

Это мой login.jsфайл со стратегией входа в систему:

passport.use(
    "login",
    new LocalStrategy(
      {
        passReqToCallback: true
      },
      function(req, username, password, done) {
        // check in mongo if a user with username exists or not
        User.findOne(
          {
            username: username
          },
          function(err, user) {
            // In case of any error, return using the done method
            if (err) return done(err);
            // Username does not exist, log the error and redirect back
            if (!user) {
              console.log("User Not Found with username " + username);
              return done(null, false, req.flash("message", "User Not found."));
            }
            // User exists but wrong password, log the error
            if (!isValidPassword(user, password)) {
              console.log("Invalid Password");
              return done(
                null,
                false,
                req.flash("message", "Invalid Password")
              ); // redirect back to login page
            }
            // User and password both match, return user from done method
            // which will be treated like success
            return done(null, user);
          }
        );
      }
    )
  );

  var isValidPassword = function(user, password) {
    return bCrypt.compareSync(password, user.password);
  };

Может кто-нибудь предложить решение, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...