web-dev-qa-db-ja.com

Cookieの代わりにSessionStoreでNode.js Expressセッションの有効期限を設定する

私がExpress Session sの有効期限で見つけることができるすべては、クッキーを設定することです。

session.cookie.expires = null; // Browser session cookie  
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie

ただし、Cookieの有効期限はsecretでは「保護」されていません。これらはブラウザが管理するCookie設定にすぎないためです。

セッションの有効期限をセッションストアに設定するにはどうすればよいですか?理論的には、誰かがあなたのコンピューターを使用するとき、サーバー側のセッションもCookieと同時に期限切れにならない場合、誰かが期限切れのCookieの有効期限を「修正」してセッションを継続できるからです。

これがどのように機能するのか、またはこれを設定/変更する方法について何も見つかりません。

13
Redsandro

セッションミドルウェアでは、暗号化されたセッションIDのみがクライアント側のCookieに保存されます。期限切れの日付はreq.session.cookie.expiresとしてサーバー側ストアに格納されます。したがって、カスタムミドルを追加して、現在のセッションが期限切れかどうかを確認できます。

// ...
app.use(express.cookieParser());
app.use(express.session({secret:'yoursecret', cookie:{maxAge:6000}}));

app.use(function(req, res, next) {
  // if now() is after `req.session.cookie.expires`
  //   regenerate the session
  next();
});

// ...
23
bnuhero