Node.js PassportJS(Google OpenID)req.user中无任何内容

Node.js PassportJS(Google OpenID)req.user中无任何内容,node.js,express,passport.js,Node.js,Express,Passport.js,根据 如果验证成功,将调用下一个处理程序,并将req.user属性设置为已验证的用户 然而,我有这样的想法: passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new GoogleStrategy({ returnURL: "htt

根据

如果验证成功,将调用下一个处理程序,并将
req.user
属性设置为已验证的用户

然而,我有这样的想法:

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

passport.use(new GoogleStrategy({
    returnURL: "http://localhost:3000/auth/google/return",
    realm: "http://localhost:3000/"
}, function(id, profile, done) {
    console.log("Done: ", profile);
    done(null, profile);
}));

app.get('/auth/google', passport.authenticate('google', {session: false}));
app.get('/auth/google/return', passport.authenticate('google', {
    successRedirect: '/success',
    failureRedirect: '/failure',
    session: false
}));

app.get('/success', function(req, res, next) {
    console.log(req.user);
    res.send(JSON.stringify(req.user));
});

app.get('/failure', function(req, res, next) {
    res.send("FAIL");
});

路由
/success
中的
req.user
未定义的
GoogleStrategy
定义中的
req.user
是正常的。为什么呢

您不使用会话有什么原因吗

尝试在不使用{session:false}的情况下使用此选项

app.use(express.cookieSession());
//passport config here
app.use(passport.initialize());
app.use(passport.session());
//routes here

如果在调用
passport.authenticate
的选项中指定
session:false
,则不会设置
req.user


您可以像在新Google策略的回调中一样使用用户的配置文件,但请注意,您的服务器可能最终会让用户验证每个请求,而不是重用访问令牌。

我试图创建一个RESTful API,它应该是无状态的。