Я использую passport-google-oauth20
в качестве единственной формы аутентификации для моего приложения. Все выглядит нормально, и я могу аутентифицировать пользователя и сохранить его в БД с помощью verify
паспорта обратного вызова.
В этом приложении я буду использовать Google только для аутентификации пользователя и проверки, существует ли он в БД. Я не буду больше отправлять запросы в Google или получать больше информации от Google.
Я заметил, что за функцией обратного вызова в паспорте происходит много магии. Я плохо понимаю, как работают serializeUser
и deserializeUser
, но я не уверен, , когда , это необходимо.
Функция обратного вызова, которую предоставляет passport, устанавливает JWT для localStorage, поэтому мне все равно нужно сериализовать пользователя, даже если я установил параметр { session: false }
для перенаправления?
Вот код, чтобы прояснить ситуацию
passport.use(
new GoogleStrategy({
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
callbackURL: 'http://localhost:3000/auth/google/redirect'
},
(accessToken, refreshToken, profile, done) => {
// console.log('TCL: profile', profile); -> Gives profile info
// console.log('TCL: refreshToken', refreshToken); -> Null
// console.log('TCL: accessToken', accessToken);
// This attaches the user profile to the req object
done(null, profile);
})
);
Вот маршруты:
app.use(passport.initialize());
app.get(
'/auth/google',
passport.authenticate('google', { scope: ['profile', 'email'] })
);
app.get(
'/auth/google/redirect',
passport.authenticate('google', { session: false }),
(req, res) => {
console.log(req.user);
res.redirect('/');
}
);
Я могу получить профиль и всю необходимую информацию. Мне все еще нужно сериализовать пользователя?