Javascript passport.js req.user正在返回:';承诺{false}';-如何获取当前会话';用户名?

Javascript passport.js req.user正在返回:';承诺{false}';-如何获取当前会话';用户名?,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,在Node.js中,我使用PassportJSLocalStrategy对用户进行身份验证。这个函数呢 req.getAuthenticated() 允许我获取当前会话是否经过身份验证。我还希望服务器返回当前会话的用户名。为此,我尝试访问req的user属性 if(req.isAuthenticated()){ let user = req.user.username; } 但它正在返回“未定义”。我继续说 if(req.isAuthenticated()){ consol

在Node.js中,我使用PassportJSLocalStrategy对用户进行身份验证。这个函数呢

req.getAuthenticated()

允许我获取当前会话是否经过身份验证。我还希望服务器返回当前会话的用户名。为此,我尝试访问req的user属性

if(req.isAuthenticated()){
    let user = req.user.username;
}  
但它正在返回“未定义”。我继续说

if(req.isAuthenticated()){
    console.log(req.user);
}
出于某种原因,它说req.user是一个“Promise{false}”。一、 然后尝试

if(req.isAuthenticated()){
    let user = await req.user;
    console.log(user);
}
它返回“false”。这是我第一次使用passport.js,所以我可能设置错误,因为req.user不应该返回承诺,对吗?有什么建议吗

有关更多信息:以下是我的passport序列化/反序列化和passport.use函数的内容:

同样,getAuthenticated函数工作得很好。当用户登录时,将对其进行身份验证,而当用户未登录时,则不会对其进行身份验证。我只是无法获取req.user属性

const initialize = (passport, UserCollection, getUserFromUsername, getUserFromId) => {
    const authenticateUser = async (username, password, done) => {
        let user = await getUserFromUsername(UserCollection, username);
        if(user === null){
            return done(null, false, {message: 'The user with that username does not exist in the database.'});
        }
        try{
            if(await bcrypt.compare(password, user.password)){
                return done(null, user);
            }
            else{
                return done(null, false, {message: 'Passwords do not match'});
            }
        }
        catch {
            return done(null, false, {message: 'There was a problem logging you in.'})
        }
    }

    passport.use(new LocalStrategy(authenticateUser));
    passport.serializeUser((user, done) => {
        return done(null, user._id);
    });
    passport.deserializeUser((id, done) => {
        return done(null, getUserFromId(id));
    });
}

您应该在
反序列化用户中等待承诺:

passport.deserializeUser(async (id, done) => {
        const user = await getUserFromId(id);
        return done(null, user);
    });

谢谢这是我在上面代码中遇到的两个问题之一。第二个问题是我没有将用户数据库模型传递给getUserFromId