現在、アプリにパスポートモジュールを適用しようとしています。
私はいくつかのマニュアルを読んでいますが、
_app.use(passport.initialize());
app.use(passport.session());
_
app.use(passport.initialize())
は正確に何をしていますか?
passport.session()
は、おそらくパスポートがセッション情報を使用するためのものです。
しかし、私はpassport.initialize()
については知りません
passport.initialize()
は、 パスポート を初期化するミドルウェアです。
ミドルウェア は、要求オブジェクト(req)、応答オブジェクト(res)、およびアプリケーションの要求応答サイクルの次のミドルウェア関数にアクセスできる関数です。
Passportは、リクエストを認証するNodeの認証ミドルウェアです。
したがって、基本的にpassport.initialize()
は認証モジュールを初期化します。
passport.session()
は、要求オブジェクトを変更し、現在(クライアントCookieからの)セッションIDである「ユーザー」値を真のデシリアライズされたユーザーオブジェクトに変更する別のミドルウェアです。 ここで詳しく説明します
Passportjsドキュメントから:
ConnectまたはExpressベースのアプリケーションでは、Passportを初期化するにはpassport.initialize()ミドルウェアが必要です。アプリケーションが永続的なログインセッションを使用する場合、passport.session()ミドルウェアも使用する必要があります。
ソースコード を見ると、passport.initialize()ミドルウェアが基本的にパスポートインスタンスを着信要求に追加し、認証戦略を進めることができることがわかります。
セッションがある場合、リクエストにも追加されます。
コードを調べるほうが良い場合もあります: passive github on initialize()
TL; DR
セッションでは、initialize()
は、リクエストからのユーザーデータをシリアル化/非シリアル化する関数をセットアップします。
sessions
を使用していない場合、は不要ですpassport.initialize()
を使用します。
/**
* 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.
...