Что я сделал, чтобы решить этот вопрос, так это сохранить исходный путь пользователя в сеансе и перенаправить его обратно после завершения аутентификации.
Я добавил промежуточное программное обеспечение с именем storeRedirectToInSession перед вызовом метода проверки подлинности паспорта, например:
app.get(
"/api/auth/facebook",
storeRedirectToInSession,
passport.authenticate("facebook", { scope: ["public_profile", "email"] })
);
app.get(
"/api/auth/facebook/callback",
passport.authenticate("facebook", { failureRedirect: "/login" }),
(req, res) => {
logger.debug("Successful authentication");
res.redirect(req.session.redirectTo);
}
);
Промежуточное программное обеспечение:
const storeRedirectToInSession = (req, res, next) => {
let url_parts = url.parse(req.get("referer"));
const redirectTo = url_parts.pathname;
req.session.redirectTo = redirectTo;
next();
};
Для этого требуется пакет узла 'url'.
Я также использую экспресс-пакеты и пакеты экспресс-сессии.