Estoy creando una aplicación web usando NodeJS y ExpressJS, tengo un formulario de inicio de sesión en mi sitio web que, cuando se completa, envía una solicitud de publicación al servidor. El servidor maneja esta solicitud y los encuentra en la base de datos de MongoDB, incluso adjunta la clave de sesión como una cookie y el usuario termina recibiendo eso, pero no está siendo redirigido a la página del panel, ni siquiera redirigido en absoluto. Su sesión no se agota y el navegador no está esperando una respuesta.
app.post('/login', function(req, res){ var email = req.body.email; var password = req.body.password; User.findOne({'email' : email}, function(err, user){ if (err) { console.log(err); } if (user) { var hash = user.password; if (passwordManagement.verifyPassword(password, hash)) { var newSession = webSession.generateKey(email) webSession.SessionKeys.push(newSession); res.cookie('session', newSession.key); res.redirect('/dashboard') } } else { res.redirect('/login'); } }) });Hay algunos problemas de ruta de control presentes en su código.
Es posible que desee volver a escribir de la siguiente manera:
app.post('/login', function(req, res, next){ var email = req.body.email; var password = req.body.password; User.findOne({'email' : email}, function(err, user){ if (err) { console.log(err); return next(err); } if(!user) { return res.redirect('/login'); } var hash = user.password; if (!passwordManagement.verifyPassword(password, hash)) { return res.redirect('/login'); } var newSession = webSession.generateKey(email) webSession.SessionKeys.push(newSession); res.cookie('session', newSession.key); res.redirect('/dashboard') }) }); Tenga en cuenta que he agregado next parámetro al controlador de ruta y lo uso en caso de error. Además, he reescrito el código para una mejor legibilidad.