我对节点世界很陌生。我已经环顾了几天,我找不到用现有的npm“官方”解决方案做到这一点的方法。如果有道歉,我希望能够更好地找到合适的节点资源。
我已根据互联网上的各种示例实施了工作护照本地政策。效果很好
我现在想要实现会话管理,特别是我不想使用cookie并使用GET
/ POST
参数。其背后的原因是我正在构建一个API服务,可能必须使用不存在cookie /头的自定义协议(HTTP除外)。
我看到所有会话都支持带护照的实现,它们似乎都依赖于express / connect会话包,反过来,它似乎只支持cookie而无法读取/写入会话密钥{{1 } / POST
参数。
在我推出自己的定制解决方案之前,您是否可以指出我已经可用的任何内容(如果存在的话)?
答案 0 :(得分:3)
所以你可以这样做。
passport.js将npm express-session中间件用于实际的会话基础设施。
由于express支持管道化的任意中间件,我设法使用以下解决方法:
在快速设置中,在快速会话中间件之前添加中间件功能。
在中间件功能中,检查请求中是否存在会话令牌/ ID(作为标题或正文中所需的),如果是,请从中读取会话令牌/ id。 / p>
将会话令牌/ ID设置为request.cookies对象(如果您正在使用cookie解析器)和/或附加到标头中的序列化cookie:request.headers.cookie + = .. 。我的新饼干到了这里......
确保在传递给express-session
express-session现在应该能够从复苏请求中获取它。
答案 1 :(得分:0)
看起来不行,没有办法做到这一点,情况仍然可以从这个答案推断出来:passport.js local strategy- logging in with username, authenticate later requests with token`由passport.js创建者本人。
我最终创造了自己的。 根据记录,我使用的方法是有两种护照策略:
GET
或POST
参数中检索令牌,并使用存储在令牌中的用户ID来查询用户数据库。
jwt解决方案使用node-jwt-simple https://github.com/hokaccha/node-jwt-simple。一切正常,但我已经失去了轻松回退到基于cookie的会话的能力。希望比我更熟练的人可以创建一个解决方案,利用标准的快速会话nmp