2

我在我的 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请求而/admin不是一个请求GET

我能做些什么?如何指定res.redirect以正确的方式重定向?

4

2 回答 2

2

对我来说看起来不错,您可以尝试这样做以排除错误:错误是问题:

res.redirect('/admin');

如果你想闪烁一条消息,我会使用 connect-flash:

应用程序.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>
  <% } %>
于 2012-11-06T23:50:18.320 回答
0

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

不明确的。重定向到

代替

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

res.redirect('/admin');

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

于 2017-03-27T11:06:55.940 回答