问题标签 [express-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1635 浏览

node.js - 在视图中访问 Express 会话变量

我正在尝试访问 EJS 视图中的会话变量。但不能这样做下面是代码

这是登录处理程序

在 EJS 视图中,我试图打印登录处理程序设置的用户名

我在这里缺少什么?

0 投票
1 回答
1205 浏览

javascript - Express 会话变量不会在请求之间持续存在

express-session我正在尝试使用该模块让会话变量在我的 Express Node.js 项目中工作。我没有收到任何错误,并且设置会话变量似乎有效,但是它们不会在请求中持续存在。这是我的代码的简化位:

服务器.js

api/projects.js 路由器

设置变量似乎有效......

API 调用应设置一个/set名为test. 当我尝试使用此 API 调用时,它似乎有效curl

这也在控制台日志中得到确认:

...但是下次我检查它时它没有设置

当我尝试使用第二个 API 调用检查变量时,它似乎未声明:

这在控制台日志中得到确认,test不再设置变量:

如何确保我的会话变量在请求中持续存在?

(PS:我已经坚持了一段时间,非常欢迎任何关于提示或解决方案的小评论,即使你不确定你是否得到了答案)

0 投票
1 回答
1713 浏览

javascript - 如何公开会话变量以表达视图

我试图在 EJS 视图中访问会话变量,但面临很多问题。

要在本地访问 req.session,我使用的是这里描述的中间件Accessing Express.js req or session from Jade template

这是用于处理主路由的 route.js

在 home.ejs 中,我通过检查用户名属性是否设置来检查用户是否登录或注意。

但是,在访问主页时,我收到错误提示 无法读取未定义 错误的属性“用户名”

一旦用户通过身份验证,我就会在会话中设置用户名。

0 投票
1 回答
1274 浏览

node.js - Express 会话和 PassportJS 之间的区别

我正在考虑使用 express-session 为通过 OAuth 2 提供者身份验证的用户存储访问令牌,并为客户端应用程序提供安全签名的 cookie。

据我了解,然后我可以在来自会话存储服务器端(例如 mongodb)的后续请求中检索与 cookie 关联的令牌,然后我可以在请求中使用承载授权标头来使用 Express 路由分隔端点。

我遇到了 PassportJS 并试图弄清楚我是否需​​要在我的设置中使用它。

目前,我正在我的快速应用程序中处理登录 POST 请求,然后使用资源所有者密码凭据授予类型请求流发出访问令牌请求。这工作正常,我从提供商那里收到了访问令牌以及刷新令牌和到期时间。

据我所知,PassportJS 为各种提供者提供了身份验证策略,但我不确定它是否支持在我的案例中使用的授权类型。另外,我已经在做请求和接收令牌的工作,所以不确定 PassportJS 在这里对我有多大好处。

通过阅读 express-session 文档,我认为这将为我提供所需的一切,而且我可以根据从 api 网关返回的令牌到期时间设置 cookie 到期时间。

我认为 PassportJS 位于快速会话之上,并且只是访问快速生成的会话,对吗?

0 投票
1 回答
1243 浏览

node.js - express-session:捆绑内存存储的替代方案

我正在考虑在我的应用程序中实现快速会话,并且需要选择要存储的会话来代替该库附带的捆绑内存存储。

我了解在生产环境中使用 memorystore 的局限性,我已经看到还有其他更稳定的内存存储,例如 memcache,我认为我在某处读到的它们可以在应用程序重新启动并保持用户登录的情况下存活 - 我说对了吗?

是否有可以在生产环境中使用的内存存储实现,或者是否建议避开并选择适当的数据库存储,例如 mongoDB?

我正在尝试尽可能减少团队中其他人的学习曲线,并减少生产的设置和维护开销,而拥有单独的数据库存储很可能会带来这些开销。

0 投票
1 回答
735 浏览

node.js - 内部 500 错误 - Node.js - express-session

出于某种原因,当我编译我的服务器时,我在所有路径上都收到 500 错误:

我一直在玩的唯一的事情是“快速会话”。我有一些我正在关注的教程,但它们都是针对较旧的 express 版本,所以我必须重新编写一些东西,我什至没有做太多,但初始化了会话。

我的 app.js 中唯一改变的是:

谢谢!

0 投票
2 回答
1044 浏览

node.js - redis字符串看起来像一个哈希,获取值

我正在尝试从存储在 redis 中的 node.js 访问会话数据。在 redis-cli 我运行 Keys * 并返回

如果我然后运行 ​​GET 我会返回看起来像哈希的东西

如果我尝试使用 userKey 获取值

它返回

所以我运行了一个类型检查,发现它不是一个哈希值而是一个字符串。我现在有点困惑,因为整个事情看起来像一个哈希,我无法弄清楚如何返回我需要的值,因为只是调用 get 会返回整个事情。

我需要使用其他命令来获取值吗?

谢谢

0 投票
4 回答
16066 浏览

mongodb - 错误:未找到连接策略 MongoDB

这是一个使用快速会话存储的简单连接,即使文本来自书中,它也会不断出现此错误。我很确定这与“new MongoStore”对象初始化有关。

0 投票
1 回答
1774 浏览

node.js - 如何解析socket.io握手cookie

我正在使用 socket.io 和快速会话。我正在使用他们的中间件来获取标头中的 cookie,例如:

}); 这把它放到控制台:

好,很好!现在我有了 cookie,但是如何从中获取信息。我彻底糊涂了。

我的会话是这样初始化的:

}));

我已经通过一个简单的解释进行了广泛的搜索,但我没有找到一个。我需要使用 sessionStore 吗?如果是,为什么?我已经尝试了不同的模块来处理这个问题,但到目前为止它们都没有奏效。我正在使用 MongoDB,所以如果有必要我不介意将它们存储在那里,但我想避免像其他人一样使用 Redis 来处理这个问题。

0 投票
0 回答
15 浏览

express - 是什么让我的信息从“memcached”中删除

目前我正在使用memcached + connect-memcached + express-session在生命周期内临时存储用户信息。

但是我发现最近用户信息被删除得非常快,我不知道为什么?它发生如下:

  1. 7使用用户名和密码登录,由于我的express-session配置,用户信息应该存储几天cookie: { maxAge: 86400000 * 7 }
  2. 登录后,离开鼠标和键盘一会儿(可能是1分钟)
  3. 尝试在需要用户信息的网页上单击某些内容
  4. 在挖掘节点代码时,我确实有 sessionId,因为它被设置在 cookie 中,并且几乎memcached没有返回任何内容,key这几乎要了我的命。

我没有找到任何关于这种行为的文件,有人可以帮忙吗?

我想知道为什么信息没有过期也会被删除?

我已经给出2000-m选项,memcached即使我找不到任何描述它的文档(我认为它应该是内存使用)。