Node JS +护照+快递

时间:2019-12-27 09:12:27

标签: node.js express passport.js passport-local

我正在尝试通过编写中间件并设置res.locals.currentUser = req.user来获取登录用户的信息,但是即使用户登录后req.user仍未定义。这是我的护照配置 //护照配置

app.use(require("express-session")({
    secret:"ki keh sakde aa",
    resave:false,
    saveUninitialized:false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new localStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

2 个答案:

答案 0 :(得分:0)

我认为您不能在全局范围内从Passport访问用户对象,我相信您需要将其传递到要使用的路由。

我可能是错的,但在尝试使用户详细信息显示在所有页面的工具栏中时,我遇到了同样的问题。仍未找到适当的解决方法。

链接到我的相同问题:Express middleware passing variable, error 'TypeError: Cannot destructure property' in middleware function but works via route definiton

答案 1 :(得分:0)

尝试这样的事情

const userProfile = req.user;
    res.locals = {
        userProfile: JSON.stringify(userProfile, null, 2),
        name: userProfile.displayName,
        loggedInEmail: userProfile.emails[0].value,
        isAuthenticated: req.isAuthenticated(),
    };