【发布时间】:2020-06-10 14:28:29
【问题描述】:
我正在使用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 客户端收到用户对象时,页面使用 this.props.history.push() 函数重定向到不同的组件,该组件使用来自 react-router-dom 的 BrowserRouter 路由
确保日志功能:-
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();
}
【问题讨论】:
-
err和user在匿名回调函数 (function(err,user,info) { ... }) 中的值是否正确? (也就是说,是之后的问题吗?) -
是的,确实如此..,它在成功登录时返回用户对象,如果登录失败则返回带有错误消息的信息对象
标签: javascript node.js reactjs passport.js