使用快速会话处理登录信息-问题

时间:2020-10-22 09:24:08

标签: javascript node.js express socket.io express-session

我要做什么:因此,我正在使用会话临时存储登录信息。一个人登录时,其登录数据被写入 req.session对象的'loginInfo'属性。当同一用户重新加载页面时,只要他的会话未过期,我希望该表单使用其req.session中的数据进行预填充。


//function to check if the user has a loginInfo object in his session
function isLogged(req){
  if(req.session){
    if(req.session.loginInfo){
      return true;
    }
  }
  return false;
}

//setting up the routes
app.get('/' , (req, res) => {
  console.log(req.session.loginInfo);  //for debugging
  if(isLogged(req)) io.on('connect', socket => {
    socket.emit('isLogged', req.session.loginInfo); //and my loginInfo schema = {loginName : String, loginEmail : String}
  });
  res.render('index');
});

我正在向客户端套接字发出事件“ isLogged”,以发送登录信息。在客户端,我遵循以下代码来处理传入的数据。

socket.on('isLogged', loginInfo => {
     loginName.value = loginInfo.loginName;  //populating the input fields of the form 
     loginEmail.value = loginInfo.loginEmail;
   });

问题:当我从数据库中删除会话时(我正在使用Express-Sessions),无论是显式还是等待其过期(将其设置为2分钟) ,然后重新加载页面。其他一切工作正常,响应标头中应有set-cookie,应该是上面的代码,我在上面的代码中登录到控制台的'req.session.loginInfo'对象抛出未定义的内容。

但是表单仍然填充有登录信息。就像它从哪里得到一样,我已经从数据库中删除了该死的会话。我最好的猜测是我使用socket.io发送loginInfo的方式有问题。有什么我想念的吗?请帮忙。

0 个答案:

没有答案