在login之前阻止来自NodeJS和Sockei.io的响应

在客户端获得会话cookie之前,我希望阻止NodeJS响应连接尝试,除非请求/ login url。 我已经添加了下面的侦听器在请求时closures套接字:

server.listeners("request").unshift (request, response)-> if(request and request.url == "/login") # Set /login as the only entrance point to the server # A session cookie will be set here else # Authenticate based on the session cookie # if the session is invalid or doesn't exist abort the connection request.connection.destroy() 

这个解决scheme是否足以做我想做的事情,或者服务器是否会尝试与客户端进行协商或在请求时间之前做出其他响应? 我在同一个端口上使用https和一个通过socket.io的websocket。

在请求完成之后,服务器已经从客户端接收数据。 对此你没有办法做,但是除非你担心有人用数据淹没你,否则这不是什么大问题。

你所拥有的对于你所要求的是足够的,但要记住,你的解决scheme的安全性很大程度上取决于会话validation。 特别是,防止一个会话被一个不同于最初启动的IP地址的IP地址打开是明智的。

我发现服务器仍然会响应任何连接的ssl握手,这意味着我的解决scheme是不够的。 我会研究它,并可能会创build一个单独的问题,如何完成我想要的。