Javascript req.isAuthenticated始终返回false(react frontend)

Javascript req.isAuthenticated始终返回false(react frontend),javascript,node.js,reactjs,passport.js,Javascript,Node.js,Reactjs,Passport.js,我使用passport js进行身份验证,passport没有将用户对象放入req对象(req.user返回未定义) 登录路径:- Router.post("/login",ensurelog,async (req, res, next) => { await passport.authenticate("local", { failWithError: true }, function(err,user,info ) { if (err) { console.

我使用passport js进行身份验证,passport没有将用户对象放入req对象(req.user返回未定义)

登录路径:-

Router.post("/login",ensurelog,async (req, res, next) => {
  await passport.authenticate("local", { failWithError: true }, function(err,user,info
  ) {
    if (err) {
      console.log("1", err);
    } 
    else if (info)
     {
      res.json({info}).end();
    } 
    else if (user) {
      res.json({user}).end();
    }
  })(req, res, next);
});  
当react客户端接收到用户对象时,页面将使用此.props.history.push()函数重定向到其他组件,该组件将使用react router dom中的BrowserRouter进行路由
ensurelog功能:-

function(req,res,next){
        //console.log("reached ensurelog")
       console.log(req.user) //always returns undefined
       console.log(req.isAuthenticated()) //always returns false
       if(req.isAuthenticated()){

          res.json({
              message:'already loged in'
          }).end();
       }
        next();

    }

我只是快速地看了一眼。看起来您的
post
参数有点混乱。你能试试这个吗

var ensurelog = function(req,res,next) {
  passport.authenticate('local', function(err, user, info) {
    console.log(user);
  })(req, res, next);
};


Router.post("/login", ensurelog)

还值得注意的是,此API似乎正在使用回调函数(而不是承诺)来处理异步请求。

您的匿名回调函数(
函数(err,user,info){…}
中是否有正确的值?(换句话说,问题出在那之后吗?)是的,它会…,它会在成功登录时返回user对象,如果登录失败,则返回带有错误消息的info对象