gpt4 book ai didi

node.js - session 变量未在expressjs中设置

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:01 25 4
gpt4 key购买 nike

我尝试了多种设置 session 变量的方法,但未能成功找到解决方案。更准确地说,问题是 session (客户)变量没有被传递到其他路由(因此它们可能没有存储在默认的 MemoryStore 中)。所有代码均可在 https://github.com/codexa/pictroid/blob/session/app.js 获取。

这是分配 session 变量的代码部分 ( https://github.com/codexa/pictroid/blob/session/app.js#L304-311 )

console.log(req.session);
req.session.regenerate(function(){
// Store the user's primary key
// in the session store to be retrieved,
// or in this case the entire user object
req.session.user = "some user";
req.session.auth = true;
});

我知道这是异步的,并且在此期间将执行后续代码,但使其同步并不能解决问题。

作为示例,我正在尝试检索根目录路由 ( https://github.com/codexa/pictroid/blob/session/app.js#L87-L88 ) 中的自定义“req.session.user”

app.get('/', function(req, res) {
console.log(req.session.auth);
...

那么谁能告诉我我做错了什么以及如何解决它?提前致谢。

最佳答案

如果您使用 http,则不应设置 secure: true,因为带有 secure: true 的 cookie 只会针对 https 请求发送。如果您想保持 secure: true,则需要启动 https 服务器。如果您这样做只是为了开发目的,那么您可以暂时删除 secure: true 直到您将代码投入生产(使用 https)。

另外,在一个不相关的注释中,您可以通过仅在成功身份验证和经过身份验证的路由后启动 session 来避免 regenerate() 和 session 固定问题。这还有助于减少 session 存储中来自从未登录的访问者或爬虫的 session 数量(当然,除非您需要为未经身份验证的用户存储 session 数据)。

关于node.js - session 变量未在expressjs中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839085/

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