在重定向上发送错误消息

时间:2013-11-05 20:07:16

标签: node.js express

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

这样做的最佳方法是什么?我之前看到过有关此问题的问题,但它似乎不适用于Express的更高版本。

2 个答案:

答案 0 :(得分:14)

单独使用重定向,除了查询字符串之外,不可能传递选项:

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

重定向指示客户端启动新请求,HTTP本身就是无状态。

为了保留消息,你需要一种持久性的形式来保存下一个请求 - 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而不是being bundled一样。

答案 1 :(得分:1)

服务器端:

<link rel='shortcut icon' type='image/ico' href='http://localhost:8080/Myapp/VSCoding/Pics/Favicon.ico'>

在视图中将有一个警报(希望你们正在使用引导程序)。但是最初它将是隐藏的。如果出现错误,则会显示出来。

res.redirect('/login?error=' + encodeURIComponent('Incorrect_Credential'));

显示技巧:

<div class="alert alert-success" role="alert" id="loginAlert">
    <p style="text-align: center;">Incorrect Credential</p>
</div>