我有一个登录表单/login
,用于将登录信息发布到/checklogin
。如果凭据不正确,我想将用户重定向到/login
,并显示“用户名或密码不正确”的错误消息。但是,我似乎无法弄清楚如何通过res.redirect
传递选项,就像使用res.render
一样。
这样做的最佳方法是什么?我之前看到过有关此问题的问题,但它似乎不适用于Express的更高版本。
答案 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>