没有cookie的Passport.js会话管理

时间:2014-09-10 17:09:00

标签: node.js session-cookies passport.js

我对节点世界很陌生。我已经环顾了几天,我找不到用现有的npm“官方”解决方案做到这一点的方法。如果有道歉,我希望能够更好地找到合适的节点资源。

我已根据互联网上的各种示例实施了工作护照本地政策。效果很好

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

我看到所有会话都支持带护照的实现,它们似乎都依赖于express / connect会话包,反过来,它似乎只支持cookie而无法读取/写入会话密钥{{1 } / POST参数。

在我推出自己的定制解决方案之前,您是否可以指出我已经可用的任何内容(如果存在的话)?

2 个答案:

答案 0 :(得分:3)

所以你可以这样做。

passport.js将npm express-session中间件用于实际的会话基础设施。

由于express支持管道化的任意中间件,我设法使用以下解决方法:

  1. 在快速设置中,在快速会话中间件之前添加中间件功能。

  2. 在中间件功能中,检查请求中是否存在会话令牌/ ID(作为标题或正文中所需的),如果是,请从中读取会话令牌/ id。 / p>

  3. 将会话令牌/ ID设置为request.cookies对象(如果您正在使用cookie解析器)和/或附加到标头中的序列化cookie:request.headers.cookie + = .. 。我的新饼干到了这里......

  4. 确保在传递给express-session

  5. 的名称后命名cookie

    express-session现在应该能够从复苏请求中获取它。

答案 1 :(得分:0)

看起来不行,没有办法做到这一点,情况仍然可以从这个答案推断出来:passport.js local strategy- logging in with username, authenticate later requests with token`由passport.js创建者本人。

我最终创造了自己的。 根据记录,我使用的方法是有两种护照策略:

  • 处理登录的本地策略,并创建一个发送回用户的jwt令牌。
  • 用于对后续请求进行身份验证的承载策略,从GETPOST参数中检索令牌,并使用存储在令牌中的用户ID来查询用户数据库。 jwt解决方案使用node-jwt-simple https://github.com/hokaccha/node-jwt-simple

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