gpt4 book ai didi

javascript - Nodejs : session is undefined after generating

转载 作者:行者123 更新时间:2023-12-03 11:33:50 26 4
gpt4 key购买 nike

我在我的node/html项目中使用express 4和express-session时遇到问题。

  1. login.html 对 Node 程序进行 ajax 调用。

  2. 如果成功, Node 会生成一个 session ,记住属性 req.session.username 中的用户名,并将文件名 csmain.html 返回到 login.html。然后 login.html 将浏览器重定向到 csmain.html

  3. csmain.html 然后立即在其 load() 中进行 ajax 调用,但问题是此时 session 似乎尚未准备好。 req.session.user 在 Node 中未定义。这意味着浏览器在 load() 的 ajax 调用中尚未使用该 session 。

有什么想法可以解决这个问题吗?

Node 登录部分中的代码用于生成 session

request.session.regenerate(function(err) {
});
if (request.session.views ) {
// empty
} else {
request.session.views = 1;
request.session.username = username;
}

html 重定向 -- 登录 html 中的 javascript 部分。 xmlHttp.responseText中的第一个字符是登录状态,其余文本是http链接

if (status === BDX_ERR_SQL_WRONG_PASSWORD) {
document.getElementById("feedbackMsg").innerHTML = 'login error';
}else if (status === '0') {
window.location = '../' + xmlHttp.responseText.substring(1, len);
}

最佳答案

由于您使用数据库作为 session 存储,因此 regenerate() 调用很可能是异步的。这意味着在调用回调之前,regenerate() 不会完成,因此您需要这样做:

request.session.regenerate(function(err) {
// should do error checking here

if (request.session.views ) {
// empty
} else {
request.session.views = 1;
request.session.username = username;
}

// continue with the rest of your code flow here inside the callback

});

此处表达 session 文档:https://github.com/expressjs/session#sessionregenerate

关于javascript - Nodejs : session is undefined after generating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com