express-sessionでsaveUninitializedとresaveを使用するタイミングについて
質問
MEANスタックの初心者です。express-sessionを読みました。
githubドキュメント
を読みましたが、私には不明なオプションがいくつかあります。それらのオプションは
saveUninitialized
と
resave
.
で説明してください。
例
を使用する利点は何ですか?
saveUninitialized
と
resave
といったオプションのブール値を変更した場合、どのような効果があるのでしょうか。
構文:-)
app.use(session({
resave: false,
saveUninitialized: true,
}))
どのように解決するのですか?
セッションがグローバルに(すべてのリクエストに対して)有効であると仮定してみましょう。
クライアントが HTTP リクエストを行い、そのリクエストがセッションクッキーを含んでいない場合、新しいセッションは
express-session
. 新しいセッションを作成すると、いくつかのことが行われます。
- 一意のセッションIDを生成する
- そのセッション ID をセッションクッキーに保存します (これにより、クライアントが行った後続のリクエストを識別することができます)。
-
として、空のセッションオブジェクトを作成します。
req.session
-
の値に応じて
saveUninitialized
の値に応じて、セッションオブジェクトはセッションストア (一般的には何らかのデータベース) に保存されます。
リクエストの有効期間中にセッションオブジェクトが修正されない場合、リクエストの終了時に
saveUninitialized
が
false
の場合、(変更されていないのでまだ空の) セッションオブジェクトはセッションストアに保存されません。
この背後にある理由は、セッションストアに保存される多くの空のセッションオブジェクトを防ぐためです。保存する有用なものがないため、セッションはリクエストの終了時に忘れ去られます("forgot")。
いつこれを有効にするのでしょうか?たとえば、何度も訪れる訪問者を識別できるようにしたい場合です。そのような訪問者は、一意の ID を含むセッション クッキーを送信するので、認識することができます。
について
resave
これは "touch" コマンドをサポートしていないセッションストアに対して有効にしなければならないかもしれません。これは、特定のセッションがまだアクティブであることをセッション ストアに伝えるもので、アイドル (未使用) セッションをしばらくすると削除するストアもあるため、必要です。
セッションストアドライバがtouchコマンドを実装していない場合、セッションストアドライバで
resave
を有効にして、セッションがリクエスト中に変更されなかった場合でも、ストア内で更新されるようにします (これにより、アクティブであることが示されます)。
したがって、このオプションを有効にする必要があるかどうかは、使用しているセッション ストアに完全に依存します。
関連
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] MEAN.jsとMEAN.ioの違いについて
-
[解決済み] express 4.0 , express-session with odd warning message.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)