Javascript req.isAuthenticated始终返回false(react frontend)
我使用passport js进行身份验证,passport没有将用户对象放入req对象(req.user返回未定义) 登录路径:-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.
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对象