2016-01-15 2 views
5

最近、私は特急のミドルウェア「表現・セッション」について学んだ、私はexpress-sessionのAPIについて読んだとき、私は3express-sessionの "saveUninitialized"、 "resave"、 "rolling"プロパティの意味はどうですか?

と困惑しているoptions.But与えられた内のすべてのプロパティを理解したいです

プロパティ:saveUninitializedresaverolling

彼らはすべてのCookieの設定やセッションの操作に影響を持っているので、それらの違いとの接続は何ですか?

ホープ誰かが、

おかげで多くのことを区別するために私を助けることができます!

+0

https://stackoverflow.com/questions/40381401/when-use-saveuninitialized-and-resave-in-express-session –

+0

https://stackoverflow.com/questions/31385726/whats-the-difference -in-save-initialunized-and-resave –

答えて

7

現代のブラウザが要求を行うと、それはCookieヘッダに現在のドメイン(Webサイト)を一致するすべてのクッキーを追加します。ここで私はstackoverflow.comを訪問した場合、私のブラウザが送るかもしれないものの例です:

Cookie: acct=1234

初めてサイトを訪問したときに何クッキーがブラウザによって送信されません。その場合には(と所有者は、たとえば、ユーザーセッションを追跡するためにクッキーを利用したい場合)、サーバは、一般的に、Set-Cookieヘッダーで、このような応答します:

Set-Cookie: acct=5678; expires=Sat, 15 May 2050 15:32:57 GMT; domain=.stackoverflow.com

を(それはまた、pathを追加することができますすべてのhereを説明しsecure、およびHttpOnlyオプション、)私は簡素化していますが、あなたが初めてサイトにアクセスすると、デフォルトでは、express-sessionSet-Cookieを送信します。

rollingtrueの場合、毎回送信されます。これは、すべてのページリフレッシュでクッキーの期限切れを継続的にロールフォワードするという望ましい副作用を持っています。新しい有効期限は、現在のサーバー時間にmaxAgeを追加することによって決定されます。

あなたがreq.sessionオブジェクトを変更した場合、それはリクエストの終了時にバックセッションストアに保存されます。それ以外の場合は保存されません。何も変更が行われなかった場合でも、毎回保存するresavetrueに力を設定します。非合理に見えるかもしれませんが、特定の店舗でこれが必要な場合があります(ただし、リストを見ても、現在行っていないようです)。

クッキーが最初に設定されると、新しいセッションオブジェクトがメモリに作成され、要求の最後にストアに保存されます。これは、多くの人が訪問してからログインしたような意味のあるアクションを実行せずにバウンスしている場合には、データベース内の多くの領域を占める可能性があります。セッションがデフォルトのセッションオブジェクトから逸脱した場合(つまり、ログイン時にreq.session.user = user;を設定するなど)をsaveUninitializedfalseに設定してください。

これらの値の特定の組み合わせ(他の値とともに)が予期しない動作を引き起こす可能性があることに注意してください。例えば、ドキュメントの状態:このオプション[ローリング]がtrueに設定されているが、saveUninitializedオプションがfalseに設定されている場合

は、クッキーが初期化されていないセッションと応答に設定されません。

+0

私たちは話すことができますか?疑いはありませんか? –

関連する問題