在登录前阻止NodeJS和Sockei.io的响应

时间:2012-09-17 02:32:45

标签: node.js socket.io

在客户端获取会话cookie之前,我希望阻止NodeJS响应连接尝试,除非请求/ login url。我在请求时添加了以下侦听器来关闭套接字:

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()

此解决方案是否足以满足我的需求,或者服务器是否会尝试与客户进行协商或在请求之前做出响应?我在同一个端口上使用https和一个websocket通过socket.io。

2 个答案:

答案 0 :(得分:0)

在发出请求时,服务器已经从客户端接受数据。你无能为力,但除非你担心某人充斥着你的数据,否则这不是一个大问题。

您所拥有的内容足以满足您的要求,但请记住,解决方案的安全性在很大程度上取决于会话验证。特别是,防止会话被不同于最初启动的IP地址打开会是明智的。

答案 1 :(得分:0)

我发现服务器仍会响应任何连接的ssl握手,这意味着我的解决方案还不够。我会调查它,并可能就如何完成我想要的事情创建一个单独的问题。