gpt4 book ai didi

Node.js:将 mocha 与 passport.socketio 一起使用时共享 session cookie

转载 作者:搜寻专家 更新时间:2023-10-31 23:12:35 33 4
gpt4 key购买 nike

我在一个 Node.js 项目中工作,我们在该项目中使用 Passport 进行身份验证。为了将身份验证桥接到 socket.io/engine.io,我们使用 passport.socketio 包。这在浏览器中效果很好,因为可用的 cookie 是在通过 HTTP 完成的初始 socket.io/engine.io 握手中发送的。

当我们尝试使用 mocha 为套接字 API 编写测试时,首先通过带有模块请求的 Passport HTTP 调用登录,我们无法找到一种方法将接收到的 session cookie 与 socket.io-client(使用engine.io-client)初始连接。因此我们找不到在 mocha 中编写这些测试的方法。

有没有一种方法可以设置在握手中发送额外的 header 或在请求和套接字连接之间共享一个 cookie jar,或者是否有其他解决方案?

(有一个过时的“黑客”解决方案,但它不再有效 jfromaniello/passport.socketio#72)

最佳答案

我也曾为此苦苦挣扎,在弄明白之后,我写了一篇关于它的文章:Testing Socket.io + Passport.socketio with Mocha .

简而言之,我无法在握手请求中注入(inject) cookie,但 passport.socketio 允许我们将 session_id 作为查询参数传递,如下所示:

var socket = io(
socketUrl,
{
//-- pass session_id as a query parameter
query: 'session_id=' + mySessionId
}
);

有关详细信息和示例,请参阅文章。

关于Node.js:将 mocha 与 passport.socketio 一起使用时共享 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398732/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com