のは、セッションが(すべての要求のための)グローバルに有効にされていると仮定しよう。
クライアントがHTTP要求を行い、その要求にセッションクッキーが含まれていない場合、express-session
によって新しいセッションが作成されます。新しいセッションを作成すると、いくつかのことを行います。
- は、一意のセッションIDをセッションクッキーにセッションID(クライアントによって行われたので、その後の要求を識別することができます)
- が空のセッションを作成することを
- ストアを生成しますオブジェクトは、
saveUninitialized
の値に応じreq.session
- として、リクエストの終了時に、セッションオブジェクトは、
(一般的にデータベースのいくつかの並べ替えである)セッションストアに格納されます
要求の存続期間中にセッションオブジェクトが変更されていない場合、要求の最後にsaveUninitialized
がである場合、の場合、セッションオブジェクトは(まだ変更されていないため空ではありません)セッションストアに保存されません。
これは、セッションストアに多数の空のセッションオブジェクトが格納されるのを防ぐためです。保存に役立つものは何もないので、セッションはリクエストの最後に「忘れられた」ものです。
いつ有効にしますか?定期的な訪問者を特定できるようにする場合など。そのような訪問者は、一意のIDを含むセッションCookieを送信するため、このような訪問者を認識することができます。
約resave
:これは、「touch」コマンドをサポートしないセッションストアに対して有効にする必要があります。これは、特定のセッションがまだアクティブであることをセッションストアに伝えます。これは、一部のストアがしばらくしてアイドル(未使用)セッションを削除するため必要です。
セッションストアドライバでtouchコマンドが実装されていない場合は、resave
を有効にして、要求中にセッションが変更されていなくてもストアで更新されるようにします(アクティブにします)。
このオプションを有効にするかどうかは、使用しているセッションストアによって異なります。
私はいくつか疑問があります、私たちは話すことができます、それは私をたくさん助けますか? –
@SurajJainは私にロバートのメールを撃つ。Klep DOTの名前:D – robertklep
さて、これでいいだろう。 –