49

Connect/Express には、2 つのセッション関連のミドルウェアがバンドルされています。違いはなんですか?どのように選択すればよいですか?

セッションミドルウェアはcookieSessionミドルウェアと同じですが、ストア メカニズムが追加されていると想定しています。

4

2 に答える 2

52

セッション ミドルウェアは、デフォルトでインメモリストレージを使用する一般的なセッション機能を実装します。ただし、他のストレージ形式を指定することはできます。

一方、 cookieSession ミドルウェアは、 Cookie を使用したスト​​レージを実装します (つまり、単なるセッション キーではなく、セッション全体が Cookie にシリアル化されます。実際には、セッション データが比較的小さいままである場合にのみ使用する必要があります。

于 2013-04-01T14:14:14.757 に答える
7

両方のミドルウェアは、クライアント側の Cookie を使用して、ユーザーのコンテキスト、つまりSessionを維持します。違いは次のとおりです。

  • Cookie に保存される内容
  • サーバー側ストアが必要かどうか

次の表は、セッションに関して 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 ミドルウェアは、追加のサーバー側ストアを必要としないという点で単純です。つまり、サーバーは完全にステートレスのままです。セッション ミドルウェアには、サーバー側のストアが必要です。デフォルトのメモリ内ベースのセッション ストアの明らかな制限は、サーバーのインスタンスが複数ある場合に機能しないことです。このような場合、代わりの共有ストレージ (データベースなど) が必要になるため、比較的複雑になります。ただし、一般的には、セッション ミドルウェアの方が柔軟性が高いため (機密データの保存や大きなペイロードなど)、より一般的に使用されます。

于 2016-05-20T06:55:46.147 に答える