0

如果用户手动或以其他方法删除所有 cookie,我想获取以前的会话数据。因为我也在会话和全局中存储了一些数据,所以我需要从全局中删除每个会话被破坏的数据。

4

2 回答 2

2

如果用户删除了所有 cookie,那么他就是没有 cookie 的用户,对吗?那么如何区分这个用户和任何其他用户呢?这是一个非常困难的问题,我怀疑是否有可靠的解决方案。

例如,您可能希望通过 IP 识别用户,但 IP 可能会更改(动态 IP)。您可能希望通过创建 WebSocket(FlashSocket 的)连接来识别用户并使其保持打开状态,但这仅在用户查看您的页面时才有效(并且也可能手动关闭)。

所以忘记以前的会议。如果您需要清理会话数据,则创建一个 CRON 作业或后台线程(或在 Node.JS 的情况下为后台异步作业),它们会定期执行此操作。或者您可以只使用被动清理,即实现会话机制,当接近(预定义的)内存限制时会自行清理(这应该在创建新会话时触发)。

于 2012-10-16T08:16:14.343 回答
0

我只是将会话设置为在 redis 中自动过期,因此它会随着时间的推移自行清理。不幸的是,我忘记了我是如何做到这一点的,我认为它是数据库上的一个属性。

当有人注销时,我会销毁会话:

req.session.destroy(function(){
 //session has been destroyed
});
于 2012-10-16T09:11:32.850 回答