これはドキュメントのどこかに埋めなければならないように感じますが、見つけることができません。
ExpressJSでセッションを(どのように)閉じたり、終了したり、強制終了したりしますか?
セッション処理はExpressに組み込まれなくなりました。この回答は、標準セッションモジュールに関するものです。 https://github.com/expressjs/session
セッションデータをクリアするには、単に次を使用します。
_req.session.destroy();
_
ドキュメントはこれについて少し役に立たないです。それは言います:
Req.sessionを削除してセッションを破棄し、次のリクエストを再生成します。
req.session.destroy(function(err) { // cannot access session here })
これは、notは、現在のセッションが次のリクエストで再ロードされることを意味します。これは、次の要求でセッションストアに空のクリーンセッションが作成されることを意味します。 (おそらくセッションIDは変更されていませんが、私はそれをテストしていません。)
気にしない、それはreq.session.destroy();
この質問では、どのタイプのセッションストアが使用されているかが明確になりませんでした。どちらの答えも正しいようです。
Cookieベースのセッションの場合:
から http://expressjs.com/api.html#cookieSession
req.session = null // Deletes the cookie.
Redisなどベースのセッションの場合:
req.session.destroy // Deletes the session in the database.
から http://expressjs.com/api.html#cookieSession
Cookieをクリアするには、応答する前にセッションをnullに割り当てるだけです。
req.session = null
_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;
};
_
つかいます、
delete req.session.yoursessionname;
req.session.destroy();
上記は私のために機能しなかったので、私はこれをしました。
req.session.cookie.expires = new Date().getTime();
Cookieの有効期限を現在の時刻に設定することにより、セッションは自動的に期限切れになりました。