Ste*_*hen 82 session node.js express
我觉得这必须埋在文档中的某处,但我找不到它.
你如何在ExpressJS中关闭或结束或杀死(无论如何)会话?
Bra*_*rad 103
会话处理不再内置到Express中.这个答案涉及标准会话模块:https: //github.com/expressjs/session
要清除会话数据,只需使用:
req.session.destroy();
Run Code Online (Sandbox Code Playgroud)
文档对此有点无用.它说:
销毁会话,删除req.session,将重新生成下一个请求.
req.session.destroy(function(err) { // cannot access session here })
但这并不意味着,本届会议将在下一个请求重新加载.这意味着将在下次请求时在会话存储中创建一个干净的空会话.(据推测,会话ID没有变化,但我没有测试过.)
Ste*_*hen 89
没关系,这是 req.session.destroy();
Blu*_*rts 23
问题没有说明正在使用什么类型的会话存储.这两个答案似乎都是正确的.
对于基于cookie的会话:
来自http://expressjs.com/api.html#cookieSession
req.session = null // Deletes the cookie.
Run Code Online (Sandbox Code Playgroud)
对于Redis等基于会话:
req.session.destroy // Deletes the session in the database.
Run Code Online (Sandbox Code Playgroud)
小智 8
用,
delete req.session.yoursessionname;
Run Code Online (Sandbox Code Playgroud)
来自http://expressjs.com/api.html#cookieSession
要清除cookie,只需在响应之前将会话分配为null:
req.session = null
Run Code Online (Sandbox Code Playgroud)
销毁会话并取消设置 req.session 属性。完成后,将调用回调。
↓安全方式↓ ?
req.session.destroy((err) => {
res.redirect('/') // will always fire after session is destroyed
})
Run Code Online (Sandbox Code Playgroud)
↓不安全的方式↓ ?
req.logout();
res.redirect('/') // can be called before logout is done
Run Code Online (Sandbox Code Playgroud)
使用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;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95942 次 |
| 最近记录: |