express 4.0、奇妙な警告メッセージを伴うexpress-session


105

Express 4.xを使用してnodejsアプリをセットアップする作業をしています。ミドルウェアの削除に関する問題を見つけた後、ようやく機能しました。

ただし、次のコード行にはいくつかの警告メッセージがありました。

app.use(session({secret: '<mysecret>'})

これらの警告は:

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass resave option; default value will change at lib\config\express.js:55:11

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass saveUninitialized option; default value will change at lib\config\express.js:55:11

ドキュメントでは、resaveおよびsaveUninitializedのデフォルト値はtrueです。

だから、読み取るコードを変更する

app.use(session({secret: '<mysecret>', 
                 saveUninitialized: true,
                 resave: true}));

警告を取り除きました。

したがって、質問の要点に到達するには:

これらの値がデフォルト値である場合、なぜこれらの値を渡さなければならないのですか。また、他のオプションを渡さないのはなぜですか。


1
これらのデフォルト値は変更されるため、変更された場合、明示的にミドルウェアに渡すことで発生する可能性のあるエラーを回避できます
soulcheck

12
私は彼らがどのようにデフォルトのオプションが何であるかをあなたに伝えないのが好きです
Brade

4
両方resavesaveUnitializedするためにどのデフォルトブール値ですtrue1.7.2で:github.com/expressjs/sessionは
CFS

1
@cfs:する必要がありますsaveUninitialized。私はあなたが投稿したものをコピーし、警告が消えない理由を理解しようとして45分を無駄にしました。後で私はスペルミスがあることに気づきました。笑:D
AdityaParab 2015年

1
無駄な時間について申し訳ありませんMaverick :)残念ながら、コメントが古すぎて編集できません。そうでなければ、タイプミスを修正します:/
cfs

回答:


68

警告が示すように、デフォルト値は変更されるため、値を明示的に設定することにより、デフォルトが変更されたときに(近い将来)予期しない動作が発生しないようにします。


ああ、それでこれらの2つのパラメーターのデフォルト値はいつか変わるでしょう?それはもっと理にかなっています!ありがとう。
jmls 2014年

3
伝説はそれを持っていますが、すぐに変更されます:)
Qcom

2
ここから未来から。まだすぐに変更される予定です:)
コンフォニア

53

問題が役に立った:

https://github.com/expressjs/session/issues/56

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));

1
コードの形式で質問に答えてくれてありがとう...この辺りでは十分にわかりません
Dave

いいね。また、ドキュメントをご覧になることをお勧めします。私のケースでは、それらを設定するために優れていたfalsegithub.com/expressjs/session#resavegithub.com/expressjs/session#saveuninitialized)。
juanra 2016

5

これをコメントとして追加するのに十分な担当者がいません。これをベンの回答のデフォルト値に追加しました。

secret: process.env.SESSION_SECRET || '<mysecret>',

2
app.use(session({
  cookieName: 'session',
  secret: 'eg[isfd-8yF9-7w2315df{}+Ijsli;;to8',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
  httpOnly: true,
  secure: true,
  ephemeral: true,
  resave: true,
  saveUninitialized: true
}));

私にとってはうまくいきます。おそらく、セッションにはいくつかの追加設定が必要でした。ありがとう
martinhajny
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.