在redirect上发送错误消息

我有一个login表单/login将login信息发布到/checklogin 。 如果凭证是不正确的,我想redirect用户到/login错误消息沿着“不正确的用户名或密码”的行。 然而,我似乎无法弄清楚如何通过res.redirect通过一个选项,就像你会使用res.render

这样做的最好方法是什么? 我看到一个关于这个问题的先前的问题,但似乎没有在Express的更高版本中工作。

单独使用redirect,除了查询string之外,不可能传递选项:

 res.redirect('/login?e=' + encodeURIComponent('Incorrect username or password')); 

redirect指示客户端启动一个新的请求,HTTP处于无状态。

为了保持消息,否则,你需要一种持久化的forms来保存它的下一个请求 – cookies,会议等。

 req.session.error = 'Incorrect username or password'; res.redirect('/login'); 

然后:

 res.render('login', { error: req.session.error }); delete res.session.error; // remove from further requests 

这也是Express 2的req.flash()帮助完成的。 而且,它的一个变体仍然可用于Express 3及更高版本 – 就像connect-flash而不是捆绑在一起 。