【问题标题】:How do I reset a cookie connected to an already existing express session?如何重置连接到现有快速会话的 cookie?
【发布时间】:2020-02-02 16:07:39
【问题描述】:

我正在使用 Mongo Sessions 来保存用户数据(无需登录)。当用户第一次登录时,我在 db 上创建了一个新会话并在客户端上设置了一个 cookie,会话信息现在保存在 localStorage 中。我想为每个用户使用相同的会话,因此他们的会话对象还存储诸如 'Last Seen' 、 'Socket ID' 等内容。这些内容经常变化。

问题是当用户客户端删除 cookie 时(有任何机会),会创建一个新的 cookie + 会话,因此所有数据都“消失”了。 我的问题是“如何设置指向现有会话的新 cookie”?

// Anytime there is a (re)connection save the socketID to the session

io.on('connection', function(socket: i.Socket) {

  socket.handshake.session!.lastSeen = new Date();
  socket.handshake.session!.socketID = socket.id;
  socket.handshake.session!.save((err: Error) => {
    if (err) {
      console.log('Error in saving session! => ', err);
    }  
  });
  // Now each session has it's socketID!
});

感谢您的帮助,我需要这个。您还可以建议我可以执行此操作的其他方法。

【问题讨论】:

    标签: node.js express authentication cookies session-cookies


    【解决方案1】:

    如何在为用户创建新会话的同时检查用户的现有会话?如果存在,请在 cookie 中使用该会话 ID。

    但是,lastSeensocketID 听起来像是应用程序逻辑。这些可以与用户数据一起保存在数据库中。

    【讨论】:

    • 是的,就是这样,会话用作用户数据
    猜你喜欢
    • 2012-02-16
    • 2014-04-16
    • 2016-11-30
    • 2016-08-08
    • 2017-01-07
    • 2013-09-16
    • 2017-05-22
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多