С Passport, какова цель сериализации пользователя, если я аутентифицируюсь с токенами? - PullRequest
0 голосов
/ 13 апреля 2019

Я использую 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('/');
    }
);

Я могу получить профиль и всю необходимую информацию. Мне все еще нужно сериализовать пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...