Connect/Express には、2 つのセッション関連のミドルウェアがバンドルされています。違いはなんですか?どのように選択すればよいですか?
セッションミドルウェアはcookieSessionミドルウェアと同じですが、ストア メカニズムが追加されていると想定しています。
Connect/Express には、2 つのセッション関連のミドルウェアがバンドルされています。違いはなんですか?どのように選択すればよいですか?
セッションミドルウェアはcookieSessionミドルウェアと同じですが、ストア メカニズムが追加されていると想定しています。
セッション ミドルウェアは、デフォルトでインメモリストレージを使用する一般的なセッション機能を実装します。ただし、他のストレージ形式を指定することはできます。
一方、 cookieSession ミドルウェアは、 Cookie を使用したストレージを実装します (つまり、単なるセッション キーではなく、セッション全体が Cookie にシリアル化されます。実際には、セッション データが比較的小さいままである場合にのみ使用する必要があります。
両方のミドルウェアは、クライアント側の Cookie を使用して、ユーザーのコンテキスト、つまりSessionを維持します。違いは次のとおりです。
次の表は、セッションに関して cookieSession ミドルウェアとセッション ミドルウェアを比較したものです。
+----------------+-----------------------+----------------------+
| | Client-side store | Server-side store |
| | (cookie) | (in-memory, db ..) |
+----------------+-----------------------+----------------------+
| Middleware | Used? | Content | Used? | Content |
+----------------+--------+--------------+-------+--------------+
| session | Yes | Session ID | Yes | Session data |
+----------------+--------+--------------+-------+--------------+
| cookie-session | Yes | Session data | No | N/A |
+----------------+--------+--------------+-------+--------------+
cookieSession ミドルウェアは、追加のサーバー側ストアを必要としないという点で単純です。つまり、サーバーは完全にステートレスのままです。セッション ミドルウェアには、サーバー側のストアが必要です。デフォルトのメモリ内ベースのセッション ストアの明らかな制限は、サーバーのインスタンスが複数ある場合に機能しないことです。このような場合、代わりの共有ストレージ (データベースなど) が必要になるため、比較的複雑になります。ただし、一般的には、セッション ミドルウェアの方が柔軟性が高いため (機密データの保存や大きなペイロードなど)、より一般的に使用されます。