【问题标题】:Node express server session management middleware?Node express服务器会话管理中间件?
【发布时间】:2020-11-05 13:32:22
【问题描述】:

我只想为我的应用程序执行基于 cookie 的身份验证。无需提供密码或电子邮件。 这就像某些 web 应用程序中的访客用户功能(如不和谐)。您可以使用该应用程序 只要您拥有该 cookie(或本地存储),就可以成为登录用户。我觉得这非常无缝,我不想给访问者设置注册障碍。

我想要一个中间件,它执行以下操作: 如果请求没有会话ID,则必须创建一个新会话(通过在mongodb的会话集合中添加新文档,并使用随机字符串设置字段session_id)

如果请求有cookie,它必须解析cookie并设置在请求对象中。更好的是,它从 db 中获取 session 对象并将其设置在 request 对象中。

有什么开箱即用的东西可以做到这一点吗?或者任何其他方法可以轻松实现这一点?

【问题讨论】:

    标签: node.js express session cookies middleware


    【解决方案1】:

    express-session 带有 mongodb 数据存储几乎可以立即完成。 mongodb here 有多个会话存储选项。 One of them 甚至由 mongodb 团队维护。

    简而言之,express-session 将检查传入的会话 cookie。如果存在,它将在会话存储中查找会话 ID 并找到该 ID 的会话对象。如果没有 cookie 或 DB 没有该 ID 的会话,它将确保有一个 cookie 并为其创建一个新会话。对于会话中间件下游的所有请求处理程序和中间件,该会话将以 req.session 的形式提供。

    您需要从 mongodb 中删除旧会话,因为如果您没有将任何登录信息附加到它们,那么当用户永远不会返回您的站点或用户的 cookie 老化时,许多会话将永久孤立离开。而且,来自多个设备的同一用户将导致创建多个单独的会话(这是自动会话创建和免登录设计的副产品)。

    【讨论】:

      猜你喜欢
      • 2014-04-11
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多