我正在使用护照来验证用户,但很难访问它。我在记录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);
答案 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对象的回调访问。