在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
而不是捆绑在一起 。