Aquí hay una ruta de obtención y he almacenado el enlace anterior desde donde fue redirigido en el objeto req.session bajo returnTo . Después de redirigir, presiona /login y podemos ver el objeto en la consola.
router.get('/login', (req, res) => { console.log('get in user route..', req.session) res.render('users/login') }) req.session : router.post('/login', passport.authenticate('local', { failureFlash: true, failureRedirect: '/login' }), (req, res) => { req.flash('success', 'Welcome back!') const redirectUrl = req.session.returnTo || '/campgrounds' res.redirect(redirectUrl) })Pero después de enviar los detalles de inicio de sesión, siempre va a la ruta /campgrounds .
Encontré la respuesta después de referirme a la nueva versión de pasaporte.js . En la versión más nueva, la identificación de la sesión se actualiza. Así que ya no tengo acceso a él. Entonces, lo que hice fue declarar una variable
let ran = '' y almacenó res.locals.returnTo en la variable ran .
res.locals.returnTo = req.session.returnTo ran = req.session.returnTo res.render('users/login')Por lo tanto, tenemos acceso a la URL de retorno incluso si se actualiza la identificación de la sesión.