我正在使用没有会话的护照google-oauth-20
。
我有一个回调函数,如果用户不存在,该函数将创建一个用户并返回配置文件。然后,我有了一个中间件,用于检查用户是否是全新用户,以便将其重定向到/onboarding
路由,如果用户已经在数据库中,则将其重定向到/feed
。
这是逻辑:
passport.use(new GoogleStrategy({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_SECRET,
callbackURL: process.env.GOOGLE_CALLBACK,
},
strategyCallback
));
const authenticate = passport.authenticate('google', {
scope: ['profile', 'email']
});
const authenticateCallback = passport.authenticate('google', {
session: false
});
const redirectUser = (req, res) => {
if (req.user.isNewRecord) {
res.redirect(302, '/onboarding')
} else {
console.log(req.user)
res.redirect(302, '/feed')
}
}
在我的路线上,我有以下东西:
app.get('/auth/google', controllers.googleAuth.authenticate);
app.get('/auth/google/callback',
controllers.googleAuth.authenticateCallback,
controllers.googleAuth.redirectUser
);
app.get('/feed', (req, res) => {
console.log(req.user) // <---- UNDEFINED
res.send('welcome back!')
});
req.user
对象在重定向中丢失,它不会持久存在。有没有办法将用户对象抢回来?