在重定向上发送错误消息

Jon*_*Hwa 10 node.js express

我有一个登录表单/login,将登录信息发布到/checklogin.如果凭据不正确,我想将用户重定向到/login"错误用户名或密码"的错误消息.但是,我似乎无法弄清楚如何通过一个选项,res.redirect就像你使用res.render.

这样做的最佳方法是什么?我之前看过一个问题,但是在Express的更高版本中它似乎没有用.

Jon*_*ski 16

仅使用重定向,实际上不可能传递查询字符串以外的选项:

res.redirect('/login?e=' + encodeURIComponent('Incorrect username or password'));
Run Code Online (Sandbox Code Playgroud)

重定向指示客户端启动新请求,HTTP处于自己的无状态.

为了保留消息,你需要一种持久性的形式来保存它以用于下一个请求 - cookie,会话等.

req.session.error = 'Incorrect username or password';
res.redirect('/login');
Run Code Online (Sandbox Code Playgroud)

然后:

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

这也是Express 2 req.flash()帮助实现的目标.并且,它的一个变体仍可用于Express 3及更高版本 - connect-flash而不是捆绑.