如何在node express中的req中访问用户对象?

时间:2017-06-06 06:49:30

标签: javascript node.js express

我正在使用护照来验证用户,但很难访问它。我在记录req对象时看到了用户对象,但是当我登录或尝试访问req.user时,我得到了未定义。我甚至尝试手动设置用户对象,但我仍然未定义。有没有一个技巧来访问req内的东西或我在这里错过了一个概念?这是我在控制器中的内容:

passport.authenticate('local', function(err, user, info) {
  if (err) {
    return next(err);
  }
  if (!user) {
    return res.status(401).json({
       err: info
    });
  }
 req.logIn(user, function(err) {

  if (err) {
    return res.status(500).json({
      err: 'Could not log in user'
    });
   }
   req.user = user;
   console.log(req.user);
   res.status(200).json(req.user);
 });
})(req, res, next);

1 个答案:

答案 0 :(得分:0)

请试试这个,

app.post("/url" , function( req , res , next){
  passport.authenticate('local', function(err, user, info) {
      if (err) {
        return next(err);
      }
      if (!user) {
        return res.status(401).json({
           err: info
        });
      }

      console.log(  req.user );

      req.logIn(user, function(err) {

              if (err) {
                return res.status(500).json({
                  err: 'Could not log in user'
                });
               }
        req.user = user;
        console.log(req.user);
        res.status(200).json(req.user);
        });
    })(req, res, next);

})

在此示例中,请注意从路由处理程序中调用authenticate(),而不是用作路由中间件。这通过闭包提供了对req和res对象的回调访问。