ExpressJS GETredirect
我在我的Node应用程序上实现了一些小的aunthentication路由,就像这样简单:
app.get('/admin', function(req, res) { res.render('login', { error: false }); }); app.post('/admin', function(req, res) { if((adminAccount.username === req.body.username) && (adminAccount.password === req.body.password)) { res.redirect('/admin/books'); } else { res.redirect('/admin', { error: true }); } });
如果我用正确的凭据login,它的工作是完美的,如果我失败了,它应该通过redirect到/admin
的GET请求。 但是我得到: undefined. Redirecting to //127.0.0.1:3000/admin
undefined. Redirecting to //127.0.0.1:3000/admin
这使得我res.redirect
正在发出一个GET
请求/admin
GET
/admin
res.redirect
。
我能做什么? 我如何指定res.redirect
redirect正确的方式?
它看起来对我来说,你可以尝试这样做,以排除错误:错误的问题:
res.redirect('/admin');
如果你想刷新信息,我会使用connect-flash:
app.js:
var flash = require('connect-flash'); app.use(flash());
路线:
req.flash('error', 'Woops, looks like that username and password are incorrect.'); res.redirect('/login');
中间件:
res.locals.message = req.flash();
视图:
<% if ( message.error ) { %> <div class="message error"><%= message.error %></div> <% } %>
我的经验。 如果你总是得到
未定义。 redirect到
更换
res.redirect('/admin', { error: true });
至
res.redirect('/admin');
如果没有错误,继续尝试你想要做的事情。