Я использую паспорт 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
теряется при перенаправлении, он не сохраняется.Есть ли способ вернуть объект пользователя обратно?