res.redirect de POST

Por alguna razón, no puedo redireccionar a / blog una vez que mi inicio de sesión se haya completado. En mi controlador de inicio de sesión tengo lo siguiente.

module.exports = { post: function(req, res) { var login = req.body['login']; if (login && req.body['login']['password'] == "password") { console.log('Granted access'); res.send({redirect: '/blog'}); } else { console.log('wrong password'); res.redirect('back'); } } }; 

El jquery ajax

 $(document).ready -> $('#login-button').click () -> $.ajax url: '/login' type: 'POST' data: $('#Password').serialize() dataType: 'json' success: (data, textStatus, jqXHR) -> if typeof data.redirect == 'string' window.location = data.redirect 

actualizado al código de trabajo

No puede hacer una redirección después de un AJAX. Tienes que hacerlo tú mismo en Javascript.

servidor

 post: function(req, res) { var login = req.body['login']; app.use(express.bodyParser()); if (login && req.body['login']['password'] == "tom") { var loginPassword = req.body['login']['password']; console.log(loginPassword); console.log('Granted access'); res.send({redirect: '/blog'}); } ... } 

cliente

 $(document).ready -> $('#login-button').click () -> $.ajax url: '/login' type: 'POST' data: $('#Password').serialize() dataType: 'json' success: (data, textStatus, jqXHR) -> if typeof data.redirect == 'string' window.location = data.redirect 

Esto debería funcionar.

Los POST se redirigen a GET. No puede redirigir a un POST a un POST; podrías reenviarlo, pero eso sería extraño. Recomiendo agregar lógica a su ruta GET que manejará un usuario conectado y no conectado.

Además, 304 probablemente significa que su respuesta está siendo almacenada en caché por su navegador porque usó un 301 (redirección permanente, muy mal en el inicio de sesión, etc., use 302).

Te estás perdiendo el return :

 return res.redirect('/');