Javascript 使用express会话处理登录信息问题
我要做的是:因此,我使用会话临时存储登录信息。当一个人登录时,他的登录数据被写入 req.session对象的“loginInfo”属性。当同一个用户重新加载页面时,我希望表单预先填充来自req.session的数据,只要他的会话没有过期Javascript 使用express会话处理登录信息问题,javascript,node.js,express,socket.io,express-session,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.sessi
//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');
});
我正在向我的客户端套接字发送一个事件“IsLoged”,以发送登录信息。在客户端,我有以下代码来处理传入的数据
socket.on('isLogged', loginInfo => {
loginName.value = loginInfo.loginName; //populating the input fields of the form
loginEmail.value = loginInfo.loginEmail;
});
问题:当我从数据库中删除会话时(我使用的是express sessions),无论是显式删除还是等待会话过期(我将其设置为2分钟),然后重新加载页面。其他一切正常,响应头中也设置了cookie,我在上面的代码中登录到控制台的'req.session.loginInfo'对象抛出未定义的cookie
但是表单仍然会填充登录信息。就像它是从哪里得到的一样,我已经从数据库中删除了血腥的会话。我最好的猜测是,我使用socket.io发送登录信息的方式有问题。有什么我不知道的吗。请帮忙