Passport.js会话pipe理没有cookie

我对节点世界相当陌生。 我已经环顾了几天,我不能find现有的npm“官方”解决scheme。 如果有道歉,我希望能find合适的节点资源。

根据互联网上提供的各种实例,我实施了一份工作护照本地政策。 它运作良好

我现在想要实现会话pipe理,特别是我不想使用cookie,而是使用GET / POST参数。 其背后的原因是,我正在构build一个API服务,可能必须使用cookie /头不存在的自定义协议(而不是HTTP)。

我已经看到所有的会话支持护照的实现,他们似乎都依赖于快速/连接会话包,反过来,似乎只支持cookie和没有办法读/写会话键POST / GET参数。

在我推出我自己定制的解决scheme之前,如果存在,你能指出我已经有的东西吗?

所以你可以做到这一点。

passport.js使用npm express会话中间件作为实际的会话基础设施。

由于express支持stream水线任意中间件,所以我设法使用了下面的解决方法:

  1. 在快速安装中,在快速会话中间件之前添加中间件function。

  2. 在中间件function中,检查请求中是否存在会话标识/标识(根据需要,标头或标识),如果是,请从中读取会话标识/标识。

  3. 将会话标记/标识设置为request.cookies对象(如果您使用的是cookieparsing器)和/或追加到标头中的序列化的cookie:request.headers.cookie + = …我的新cookie会在这里.. 。

  4. 确保您在传递到快速会话的名称后命名该cookie

快速会议现在应该能够从复苏请求中提取出来。

它看起来像没有,没有办法做到这一点,情况仍然是可以从这个答案推断的情况: passport.js本地策略 – 用用户名login,通过护照authentication后续请求与令牌 `。 js创造者自己。

我最终创造了我自己的。 为了logging,我使用的方法是有两个护照策略:

  • 处理login的本地策略,并创build一个发回给用户的jwt令牌。
  • 用于validation后续请求的承载策略,从GETPOST参数中检索令牌,以及使用存储在令牌中的用户ID来查询用户数据库。 jwt解决scheme使用node-jwt-simple https://github.com/hokaccha/node-jwt-simple

这一切正常,但我已经失去了轻松回落到基于cookie的会话的能力。 希望有人比我更熟练,可以创build一个解决scheme,利用标准的快速会话nmp