Estoy trabajando en el sistema de inicio de sesión usando pasaporte.js y express con plantillas pug. Estoy tratando de mostrar la página de inicio de sesión con un mensaje de falla, y si tiene éxito, quiero redirigir al usuario a la última página en la que ha estado, cuya URL se pasa como entrada oculta dentro de la plantilla pug. Luego quiero tomar ese valor de esa entrada oculta y ponerlo dentro de successRedirect , sin embargo, dice que el requisito req is not defined :
router.post("/login", body('backurl').trim().escape(), passport.authenticate("local", { successRedirect: (req.body.backurl), failWithError: true }), function(err, req, res, next) { return res.render('login', { message: 'Unable to login, the password or the username are wrong' }) } según tengo entendido, eso sucede porque no tiene un req ya que no hay una función con req, res, next , así que traté de envolverlo con una función que lo tenga:
router.post("/login", body('backurl').trim().escape(), function(req, res, next) { passport.authenticate("local", { successRedirect: (req.body.backurl), failWithError: true }), function(err, req, res, next) { return res.render('login', {message: 'Unable to login, the password or the username are wrong'}) } } );pero sigue recargando y no funciona y no va a ninguna URL.
¿Alguien puede ayudarme a solucionar esto y mover al usuario a la URL desde la entrada oculta mientras se presenta una plantilla pug en caso de falla con las variables?
¡Gracias!
Puede representar una vista con una solicitud get(). Con una solicitud de publicación (), debe redirigir y si desea mostrar un mensaje al usuario, puede usar el paquete express-flash.
router.post("/login", (req, res, next) => { passport.authenticate("local", (err, user) => { if (!user) { req.flash('error', { msg: 'Unable to login, the password or the username are wrong') return res.redirect('/login'); } res.redirect(req.body.backurl); } });De esta manera usted puede tener más detalles sobre lo que sucedió.