ExpressJS GET重定向

时间:2012-11-06 23:34:02

标签: node.js express

我正在我的Node应用程序上实现一些小的身份验证路由,就像这样简单:

 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 });
    }
  });

如果我使用正确的凭据登录,它可以完美无缺,如果我失败了,它应该通过重定向向/admin发出GET请求。 但是我得到:undefined. Redirecting to //127.0.0.1:3000/admin

这使我res.redirect正在向POST /adminGETres.redirect请求{{1}}。

我该怎么办?如何指定{{1}}以正确的方式重定向?

2 个答案:

答案 0 :(得分:2)

对我来说没问题,你能尝试这样做以排除错误:错误是问题所在:

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>
  <% } %>

答案 1 :(得分:0)

我的经历。如果你总是得到

  

未定义。重定向到

替换

res.redirect('/admin', { error: true });

res.redirect('/admin');

如果没有错误,请继续尝试您想要做的事情。