Что такое паспорт .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.
...