如何解决快速会话在路由之间被清除
我在以下两条路线中使用了 express-session
来管理用户会话。
app.post('/login',function(req,res){
//all variables defined here
if(usernm&&passwd){
connection.query("select * from session where username=?;",[usernm],function(err,result){
if(err) throw err;
else if(result.length!=0){
res.send("Already signed in with username "+usernm);
}
else{
connection.query("select * from signup where username=? and passwd=?;",credentials,function(err1,result){
if(err1) throw err1;
if(result.length!=0)
{
req.session.loggedin=true;
req.session.username=usernm;
var sql1="insert into session values('"+usernm+"','"+req.sessionID+"');";
connection.query(sql1,result){
if(err) throw err;
else{
console.log(req.sessionID);
res.send('Logged in successfully with username '+req.session.username);
}
});
}
else{
obj={'status':'error','message':'Incorrect Username and/or Password'};
obj=JSON.stringify(obj);
res.send(obj);
}
});
}
});
}
});
app.get('/logout',(req,res)=>{
var sessionId=req.sessionID;
var username=req.session.username;
console.log(sessionId,username);
req.session.loggedin=false;
req.session.username=null;
req.session.destroy();
connection.query("Delete from session where sessionID=? or username=?;",[sessionId,username],result){
if(err) throw err;
else{
res.send("User signed out successfully!");
}
});
});
我正在使用 curl 来测试我的 api 端点。所以,问题是当我向 login
发送 post http 请求时,我在控制台上得到一个 sessionID
。但是当我使用 curl 点击 logout
时,这里打印的 sessionID
与 login
路由中打印的不同,这意味着 sessionID 在路由之间发生了变化。
此外,console.log
中的 logout
将 req.session.username
打印为 undefined
,这是不应该的。
据我所知,这个问题与会话数据在两个页面请求之间被清除有关。
我想知道为什么会这样。请帮我找出上述行为的原因,以便我可以继续我的申请。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。