【发布时间】:2014-05-20 11:47:06
【问题描述】:
我使用以下代码(使用 Express.js 和 Passport.js)设置了最大会话时间。
app.use(express.session({
cookie: {
maxAge : 3600000
}
}));
如果会话过期(用于我的日志文件和分析),我想运行一个函数。类似这样的东西:
app.use(express.session.onExpiry(function(user){
console.log('User session for ' + user + ' has expired.')
});
);
【问题讨论】:
-
虽然没有直接解决这个具体问题,my answer to this question 可能对您有所帮助。从阅读中您会注意到的一件事是,确实没有一个快速会话可以跟踪或过期。如果您使用 Redis 作为会话存储,如果有兴趣,this Q&A 应该是。
-
@barry-johnson 感谢您的评论。这是非常有见地的信息。我已经担心我必须保留自己的用户会话记录。如果我这样做了,我可能只使用一个简单的 js 对象(而不是 redis),因为此时我不太关心无状态。
-
不客气。是的,如果您自己制作或扩展 MemoryStore,您可以很容易地将其添加到您的扫描和过期/删除过程中。如果您不处理可伸缩性需求,这将可以正常工作,但您将因节点重启而失去会话持久性(这可能比您预期的更频繁地发生)。您仍然可以使用 redis,但在您的服务器上只需维护一种并行数据结构(将其粘贴在一个中间件中),仅包含会话密钥和最后一次触摸的时间戳,并对其进行操作以进行日志记录和分析。跨度>
-
你用的是什么版本的快递?
-
Express 版本 3.x 和护照最新版本。如果有帮助,我很乐意升级 express。
标签: javascript node.js session express passport.js