2017-06-06 63 views
0

我正在使用护照来验证用户,但很难访问它。我在登录req对象时看到用户对象,但在登录或尝试访问req.user时出现undefined。我甚至尝试手动设置用户对象,但仍然未定义。在req中访问内容有什么窍门,或者我在这里错过了一个概念?以下是我在我的控制器:如何在node express中访问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); 

回答

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); 

}) 

在这个例子中,注意进行身份验证()从路由处理程序中调用,而不是被用作路线中间件。这通过闭包给req和res对象提供了回调访问。

相关问题