web-dev-qa-db-ja.com

ExpressJSでセッションを終了する方法

これはドキュメントのどこかに埋めなければならないように感じますが、見つけることができません。

ExpressJSでセッションを(どのように)閉じたり、終了したり、強制終了したりしますか?

80
Stephen

Express 4.xの更新された回答

セッション処理はExpressに組み込まれなくなりました。この回答は、標準セッションモジュールに関するものです。 https://github.com/expressjs/session

セッションデータをクリアするには、単に次を使用します。

_req.session.destroy();
_

ドキュメントはこれについて少し役に立たないです。それは言います:

Req.sessionを削除してセッションを破棄し、次のリクエストを再生成します。 req.session.destroy(function(err) { // cannot access session here })

これは、notは、現在のセッションが次のリクエストで再ロードされることを意味します。これは、次の要求でセッションストアに空のクリーンセッションが作成されることを意味します。 (おそらくセッションIDは変更されていませんが、私はそれをテストしていません。)

100
Brad

気にしない、それはreq.session.destroy();

89
Stephen

この質問では、どのタイプのセッションストアが使用されているかが明確になりませんでした。どちらの答えも正しいようです。

Cookieベースのセッションの場合:

から http://expressjs.com/api.html#cookieSession

req.session = null // Deletes the cookie.

Redisなどベースのセッションの場合:

req.session.destroy // Deletes the session in the database.
22
Blueshirts

から http://expressjs.com/api.html#cookieSession

Cookieをクリアするには、応答する前にセッションをnullに割り当てるだけです。

req.session = null
8
stream7

_req.session = null;_を使用すると、セッションインスタンスは実際には削除されません。最も適切なソリューションはreq.session.destroy();ですが、これは本質的に_delete req.session;_のラッパーです。

https://github.com/expressjs/session/blob/master/session/session.js

_Session.prototype.destroy = function(fn){
  delete this.req.session;
  this.req.sessionStore.destroy(this.id, fn);
  return this;
};
_
4
tfmontague

つかいます、

delete req.session.yoursessionname;
3
Nithin
req.session.destroy(); 

上記は私のために機能しなかったので、私はこれをしました。

req.session.cookie.expires = new Date().getTime();

Cookieの有効期限を現在の時刻に設定することにより、セッションは自動的に期限切れになりました。

0
John Quasar