我在一个Node.js项目中工作,在那里我们使用护照进行身份验证。为了将身份验证连接到socket.io/engine.io,我们使用passport.socketio包。这在浏览器中非常有用,因为可用的cookie是在通过HTTP完成的初始Socket.IO/Engin.io握手中发送的。
当我们尝试用mocha为套接字API编写测试时,无论如何,通过首次通过带模块请求的护照HTTP调用登录,我们无法找到一种方法将接收到的会话cookie与socket.io-client (使用Engin.io客户端)初始连接一起传递。因此,我们无法找到用摩卡编写这些测试的方法。
是否有一种方法可以在握手中设置要发送的附加标头,或者在请求和套接字连接之间共享cookie jar,还是有其他解决方案?
(有一种过时的“黑客”解决方案,但它不再起作用了,jfromaniello/passport.socketio#72)
发布于 2015-09-17 01:52:49
我也在努力解决这个问题,在我发现这一点之后,我写了一篇关于它的文章:用Mocha测试Socket.io + Passport.socketio。
简而言之,我无法在握手请求中注入cookie,但是passport.socketio允许我们将session_id作为查询参数传递,如下所示:
var socket = io(
socketUrl,
{
//-- pass session_id as a query parameter
query: 'session_id=' + mySessionId
}
);有关详细信息和示例,请参阅本文。
https://stackoverflow.com/questions/30398732
复制相似问题