如果用户手动或以其他方式删除所有Cookie,我想获取以前的会话数据。因为我在会话和我的全局中存储了一些数据,并且我需要从每次会话中删除我的全局数据。
答案 0 :(得分:2)
如果用户删除了所有Cookie,那么他就是没有Cookie的用户,对吗?那么您如何区分这个用户和任何其他用户?这是一个非常困难的问题,我怀疑它有一个可靠的解决方案。
例如,您可能希望通过IP识别用户,但IP可能会更改(动态IP)。您可能希望通过创建WebSocket(FlashSocket)连接来识别用户并保持打开状态,但这仅在用户查看您的页面时才有效(并且可能也会手动关闭)。
所以忘记以前的会议。如果需要清理会话数据,则创建一个CRON作业或后台线程(如果是Node.JS,则创建后台异步作业),这将定期执行此操作。或者您可以使用被动清理,即实现会话机制,当接近(预定义)内存限制时将自行清理(这应该在创建新会话时触发)。
答案 1 :(得分:0)
我只是将会话设置为在redis中自动过期,因此它会随着时间的推移自行清理。不幸的是,我忘记了我是如何做到这一点的,我认为这是db上的一个属性。
当有人退出时,我会破坏会话:
req.session.destroy(function(){
//session has been destroyed
});