Connect/Expressにバンドルされている2つのセッション関連ミドルウェアがあります。違いはなんですか?どうやって選ぶの?
session ミドルウェアは cookieSession ミドルウェアと同じですが、追加のストアメカニズムがあると想定しています。
セッションミドルウェア は、デフォルトでin-memoryストレージを使用して一般的なセッション機能を実装します。ただし、他のストレージ形式を指定できます。
cookieSessionミドルウェア は、cookie-backedストレージを実装します(つまり、セッション全体が単なるセッションキーではなく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ミドルウェア はsimplerであり、サーバー側のストアを追加する必要がないため、サーバーは完全にステートレスのままです。 セッションミドルウェア にはサーバー側ストアが必要です。デフォルトのインメモリベースのセッションストアの明らかな制限は、サーバーの複数のインスタンスがある場合は機能しないことです。そのような場合は、代替の共有ストレージ(データベースなど)が必要になるため、比較的複雑になります。ただし、一般的には、セッションミドルウェアの方が(機密データや大きなペイロードなどを格納するために)より柔軟性があるため、より一般的に使用されます。