为什么(护照)中间件功能会在app.get中激活,而不是app.post

时间:2017-12-14 21:57:37

标签: node.js express middleware passport.js

我有以下中间件功能:

function isLoggedIn(req, res, next) {

  if (req.isAuthenticated()) {
    console.log('***User is logged in***');
    next();
  } else {

    res.redirect('/');
    console.log('***User IS NOT logged in***');
  }
}

这在以下GET路线中运行良好:

app.get('/profile', isLoggedIn, function(req, res) {
    res.render('profile.ejs', {
      user: req.user // get the user out of session and pass to template
    });
  });

但是,当我尝试将isLoggedIn函数插入POST路由时,它不会触发:

app.post('/add', isLoggedIn, function(req, res) {
    console.log('Success');
  });

为什么我的功能不会通过app.post触发,但是使用app.get会触发?

1 个答案:

答案 0 :(得分:0)

如果您使用jQuery或Axios等承诺库发布到网址,那么res.redirect将不会更改浏览器所在的网页。在这种情况下,您需要处理帖子的响应,导致状态代码为302(表达式重定向上的默认状态代码返回),然后将页面重定向到您需要的位置(在前端)