首页 > 解决方案 > 在 req.login Passport + React + Nodejs 之后等待的所有 Post/Get 请求

问题描述

在我成功验证用户并且用户登录后,对我的 API 发出的所有请求都将获得 Pending 状态。我的测试得出的结论是,这只发生在req.login运行时和之后。

req.login(user, loginErr => {
        if (loginErr) {
          return next(loginErr);
        }
        return res.send({ success : true, message : 'authentication succeeded' });
      }) 

完整的登录护照代码

  router.post('/login', function(req, res, next) {
    passport.authenticate('local', function(err, user, info) {
      if (err) {
        return next(err);
      }

      if (! user) {
        return res.send({ success : false, message : info.message });
      }
      
      req.login(user, loginErr => {
        if (loginErr) {
          return next(loginErr);
        }
        return res.send({ success : true, message : 'authentication succeeded' });
      })

    })(req, res, next);
  });

据我所知,一定有什么东西阻止了之后发出的所有请求。

客户端代码

let config = {
                headers: {
                  'Content-type' : 'application/x-www-form-urlencoded'
                }
              }
    
              const user = `username=${username}&password=${password}`;
    
              await axios.post(`/auth/signup`, user, config)
              .then(res => {
                // USER IS LOGGED IN
                if(res.data.success) {
                  //this.closePopup(); // POPUP gets closed.
                }
              })

这可能是什么原因?谢谢

标签: node.jsreactjspassport.jspassport-local

解决方案


问题在于app.use(passport.session()); 它需要放在路线下。


推荐阅读