res.redirect da POST

Per qualche motivo non posso redirect a / blog una volta che il mio login è stato completato. Nel mio controller di accesso ho il seguente.

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'); } } }; 

Il 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 

aggiornato al codice funzionante

Non puoi effettuare un reindirizzamento dopo un AJAX. Hai bisogno di farlo da solo in Javascript.

server

 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 

Questo dovrebbe funzionare.

I POST vengono reindirizzati a GET. Non è ansible redirect a un POST a un POST; potresti inoltrarlo ma sarebbe strano. Raccomando di aggiungere la logica al percorso GET che gestirà un utente connesso e non connesso.

Inoltre, 304 probabilmente significa che la tua risposta è stata memorizzata nella cache dal tuo browser perché hai usato un 301 (reindirizzamento permanente, molto cattivo all’accesso, ecc .; usa 302).

Ti manca il return :

 return res.redirect('/');