Twój plik
router
.route("/login")
.get((req, res, next) => {
res.render("login");
})
.post((req, res, next) => {
passport.authenticate("local", {
failureRedirect: "/register",
successRedirect: "/",
});
});
vs
dokumentacja https://www.passportjs.org/concepts/authentication/middleware/
app.post('/login/password',
passport.authenticate('local', { failureRedirect: '/login', failureMessage: true }),
function(req, res) {
res.redirect('/~' + req.user.username);
});
Nie jestem w 100% pewien, ale wydaje mi się, że passport.authenticate
zwraca po prostu middlewarea
(https://expressjs.com/en/guide/using-middleware.html) z którym nic nie robisz.
W tym przykładzie co podałem najpierw zostanie uruchomiony middleware passport.authenticate
i jeśli login/hasło będzie prawidłowe to zostanie wykonane przekierowanie na /<nazwa_uzytkownika>
router
.route("/login")
.get((req, res, next) => {
res.render("login");
})
.post((req, res, next) => {
console.log("test1"); //test
passport.authenticate(
"local",
{
failureRedirect: "/register",
successRedirect: "/",
},
(reqest, resp) => {
console.log("test2"); //test
resp.redirect("/");
}
);
});
Do routera odpowiedzialnego za login roboczo dodałem dwa log'i, a wykonuje się tylko ten pierwszy, tak, jakby callback zupelnie sie nie wykonywal
(Zakomentowałem jeszcze testowo fetcha, tak, aby wykonywał się czysty fetch, ale zupełnie nic to nie zmienia)