我有一个登录表单/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而不是捆绑.