19

Express のアプリがあり、ログイン フォームがあります。maxAge をミリ秒単位で 1 か月に設定するには、セッションを 1 か月継続する必要があります。

2 台のコンピューターの電源を入れたまま 24 時間ログインしましたが、戻ってきたときには両方ともログアウトされていました。

これを修正するにはどうすればよいですか/やろうとしていることを達成できますか? ありがとう。

4

5 に答える 5

22

@Vadim Baryshev によって受け入れられた回答は、少なくとも最新の高速セッションの実装に欠陥があります。アプリの起動時に、セッションの実装を作成し、最大年齢を設定します。有効期限を使用した回答については、推奨されませんが、maxAge を使用してください。

これは、書かれている maxAge の例では、サーバーの起動後 1 か月ごとにすべてのセッションが期限切れになり、今後作成されるすべてのセッションがすぐに期限切れになることを意味します。サーバーが再起動されるまで、有効なセッションはありません。

日付オブジェクトを渡す代わりに、次のようにミリ秒数を maxAge プロパティに渡します。

app.use(
  session({
    ...,
    cookie: {
      maxAge: 30 * 24 * 60 * 60 * 1000
    }
  })
);
于 2018-01-14T20:42:39.543 に答える
14

maxAgeセッションの継続時間をミリ秒単位で意味します。 expiresセッションがいつ期限切れになるかを意味します。つまり、日付オブジェクト

var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)

また

var hour = 3600000
req.session.cookie.maxAge = hour

ドキュメンテーション

于 2015-05-31T21:09:15.730 に答える
6

ドキュメントでは、cookie.expires を直接設定することは推奨されていません。代わりに、cookie.maxAge を直接設定してください。

高速セッション - cookie.expires

于 2017-09-26T21:04:20.197 に答える
-3
app.use(express.session({
    secret  : 'sdfsdSDFD5sf4rt4egrt4drgsdFSD4e5',
    store   : new storage({ client : conn, cleanup: false }),
    cookie  : { maxAge  : new Date(Date.now() + (60 * 1000 * 30)) }
}));
于 2013-10-15T21:01:15.917 に答える