Что такое паспорт .initialize()? (nodejs express)

Я сейчас пытаюсь применить модуль паспорта в моих приложениях.

Я читаю некоторые руководства, и там говорят,

app.use(passport.initialize());
app.use(passport.session());

Что именно делает app.use(passport.initialize())?

passport.session() может быть для паспорта, чтобы использовать информацию о сеансе,

Но я понятия не имею о passport.initialize()

Ответ 1

passport.initialize() - это промежуточное ПО, которое инициализирует Passport.

Промежуточное программное обеспечение - это функции, которые имеют доступ к объекту запроса (req), объекту ответа (res) и следующей функции промежуточного программного обеспечения в цикле запроса-ответа приложений.

Passport - это промежуточное программное обеспечение для аутентификации Node, которое аутентифицирует запросы.

Таким образом, в основном passport.initialize() инициализирует модуль аутентификации.

passport.session() - это другое промежуточное ПО, которое изменяет объект запроса и изменяет значение "user", которое в настоящее время является идентификатором сеанса (из файла cookie клиента), на истинно десериализованный объект пользователя. Это подробно объясняется здесь.

Ответ 2

Из документации Passportjs:

В приложении Connect или Express, passport.initialize() для инициализации Passport требуется промежуточное ПО. Если ваша заявка использует постоянные сеансы входа в систему, pass.session() промежуточное программное обеспечение должно также можно использовать.

Если мы посмотрим на исходный код, мы увидим, что past.initialize() промежуточного программного обеспечения в основном добавляют экземпляр паспорта к входящим запросам так что стратегия аутентификации может быть продолжена.
Если есть сеанс, он также добавляется к запросам.

Ответ 3

Иногда лучше заглянуть в код: passport github on initialize()

TL; DR

В сеансах initialize() настраивает функции для сериализации/десериализации пользовательских данных из запроса.

Вы не обязаны использовать passport.initialize(), если вы не используете sessions.

/**
 * Passport initialization.
 *
 * Intializes Passport for incoming requests, allowing authentication strategies
 * to be applied.
 *
 * If sessions are being utilized, applications must set up Passport with
 * functions to serialize a user into and out of a session.  For example, a
 * common pattern is to serialize just the user ID into the session (due to the
 * fact that it is desirable to store the minimum amount of data in a session).
 * When a subsequent request arrives for the session, the full User object can
 * be loaded from the database by ID.
 *
 * Note that additional middleware is required to persist login state, so we
 * must use the 'connect.session()' middleware _before_ 'passport.initialize()'.
 *
 * If sessions are being used, this middleware must be in use by the
 * Connect/Express application for Passport to operate.  If the application is
 * entirely stateless (not using sessions), this middleware is not necessary,
 * but its use will not have any adverse impact.
...