Паспорт JS аутентификации пользователя зависает на successRedirect - PullRequest
0 голосов
/ 14 марта 2020

Интересно, не могли бы вы помочь мне, потому что я немного озадачен тем, что именно я делаю неправильно. Я попытался отыскать Google и StackOverflow для своей проблемы, и, хотя есть похожие вопросы, я не смог найти ничего, что могло бы решить. Для начала, вот мой маршрут входа в систему:

router.post("/login", middleware.loggedIn, middleware.toLowerCase, middleware.loginValidate, middleware.authenticate, (req, res) => {
});

В каждой из этих функций промежуточного программного обеспечения я проверяю и проверяю ввод, а затем, наконец, аутентифицирую его. Кроме того, я также звоню next (); продолжить каждую функцию промежуточного программного обеспечения на следующую. Вот они в порядке почтового запроса:

middlewareObj.loggedIn = (req, res, next) => {
    if(req.user){
        req.flash("error", "You are already logged in!");
        return res.redirect("/");
    }
    next();
}

middlewareObj.toLowerCase = (req, res, next) => {
 req.body.username = req.body.username.toLowerCase();
 next();
}


middlewareObj.loginValidate = [
 check("username").trim().escape(),
 check("password").escape(),
    (req,res,next) => {
 next();
    }
];

middlewareObj.authenticate =  (req, res, next) => {

 passport.authenticate("local", {
 successRedirect: "/",
 failureRedirect: "back",
 successFlash: "Welcome back, " + req.body.username + "!",
 failureFlash: "Invalid username or password."
    }) (req, res, next);
}

faultRedirect и failFla sh в паспорте, аутентификация работает отлично, отлично. Однако по какой-то причине, когда пользовательский ввод аутентифицирован, он просто зависнет на той же странице и застрянет на панели загрузки. До тех пор, пока я снова не нажму кнопку входа на той же странице и не отправлю дополнительный запрос, он будет перехвачен моим промежуточным программным обеспечением loggedIn и сообщит, что я уже вошел в свою учетную запись. Похоже, что почтовый запрос проходит проверку подлинности учетной записи, но по какой-то причине код successRedirect не запускается. Что странно, так это то, что successRedirect прекрасно работает на локальном компьютере, но на развернутом сайте (размещенном на бесплатной героке) эта проблема будет сохраняться. Кроме того, похоже, что это происходит только на Chrome, и только в первый раз, когда пользователь пытается войти в систему успешно. Есть мысли?

Если мне не хватает чего-либо, что должно присутствовать в посте, дайте мне знать, и я уточню и добавлю, где это необходимо.

...