【问题标题】:Express JS Keep Session Alive On restartExpress JS 在重新启动时保持会话活动
【发布时间】:2015-03-07 11:22:02
【问题描述】:

我正在尝试使用 nodemon 重新启动并保持会话处于活动状态,但是当您重新启动会话时会被破坏。我想知道是否有任何方法可以继续使用 nodemon 或其他节点 js 库会话。

脚本“:{ // "开始": "节点 ./bin/www" “开始”:“nodemon ./bin/www” }

感谢您的宝贵时间

【问题讨论】:

  • 你在说什么会话?用户会话?如果是这样,您将需要一个外部 Session-Storage - 可以是任何数据库,例如 MongoDB。
  • 假设您指的是 HTTP 服务器的用户会话模块,您将需要使用持久存储,例如数据库。如果您使用express-session,您可以通过store option 进行配置。有numerous packages available 供它使用,具体取决于您要使用的具体数据库。

标签: node.js express


【解决方案1】:

为了持久化会话,有两种方法:

  1. 使用一些持久性存储

  2. 使用 JSON 网络令牌

为了实现持久会话,您可以使用 MongoDB 会话存储或 Redis 会话存储。

如果你想使用 redis,那么使用connect-redis npm 包。 如果你想使用 MongoDb 作为会话存储,那么使用connect-mongo npm 包

您需要在 app.js/server.js 中进行一些设置。在我的一个演示中,我正在使用带有 PassportJS 的 Redis 会话存储,如果您正在寻找示例,请随时查看 here

如果您想使用 JSON 网络令牌,可以使用许多不同的实现。 我正在使用jsonwebtoken。我在前端使用 PassportJS、ExpressJS 和 AngularJS 实现了这一点。例如看here。 令牌使用密钥进行编码并存储在浏览器的本地存储中。

我建议您使用 JSON Web 令牌,详细阅读它,因为这是大多数主要 Web 应用程序的开发方式。如果您需要更多帮助,请告诉我。

【讨论】:

  • 你能告诉我在 jwt 方法中如何保持会话吗?我的意思是你必须将它们存储在某个地方??
  • 您可以在用户登录时将其存储为浏览器的本地存储,并在用户注销时将其删除。当用户访问 URL 时,检查会话是否有效。还有一个重要的案例是为每个后端 API 调用传递令牌。
【解决方案2】:

您的会话只有在进程终止之前才是好的。然后它被摧毁。你必须使用持久化存储机制或者一个简单的解决方案是使用:

https://github.com/expressjs/cookie-session

可能不是一个好的长期解决方案,但会帮助您入门。

【讨论】:

    猜你喜欢
    • 2014-06-09
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2012-07-19
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多