Express のアプリがあり、ログイン フォームがあります。maxAge をミリ秒単位で 1 か月に設定するには、セッションを 1 か月継続する必要があります。
2 台のコンピューターの電源を入れたまま 24 時間ログインしましたが、戻ってきたときには両方ともログアウトされていました。
これを修正するにはどうすればよいですか/やろうとしていることを達成できますか? ありがとう。
Express のアプリがあり、ログイン フォームがあります。maxAge をミリ秒単位で 1 か月に設定するには、セッションを 1 か月継続する必要があります。
2 台のコンピューターの電源を入れたまま 24 時間ログインしましたが、戻ってきたときには両方ともログアウトされていました。
これを修正するにはどうすればよいですか/やろうとしていることを達成できますか? ありがとう。
@Vadim Baryshev によって受け入れられた回答は、少なくとも最新の高速セッションの実装に欠陥があります。アプリの起動時に、セッションの実装を作成し、最大年齢を設定します。有効期限を使用した回答については、推奨されませんが、maxAge を使用してください。
これは、書かれている maxAge の例では、サーバーの起動後 1 か月ごとにすべてのセッションが期限切れになり、今後作成されるすべてのセッションがすぐに期限切れになることを意味します。サーバーが再起動されるまで、有効なセッションはありません。
日付オブジェクトを渡す代わりに、次のようにミリ秒数を maxAge プロパティに渡します。
app.use(
session({
...,
cookie: {
maxAge: 30 * 24 * 60 * 60 * 1000
}
})
);
maxAge
セッションの継続時間をミリ秒単位で意味します。
expires
セッションがいつ期限切れになるかを意味します。つまり、日付オブジェクト
var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
また
var hour = 3600000
req.session.cookie.maxAge = hour
ドキュメントでは、cookie.expires を直接設定することは推奨されていません。代わりに、cookie.maxAge を直接設定してください。
app.use(express.session({
secret : 'sdfsdSDFD5sf4rt4egrt4drgsdFSD4e5',
store : new storage({ client : conn, cleanup: false }),
cookie : { maxAge : new Date(Date.now() + (60 * 1000 * 30)) }
}));