Node.js似乎有一个诀窍,无法获取有用或没有文档的有用模块。 socket.io就是这样一个模块。我想对命名空间使用内置的授权功能,但我不知道在客户端如何工作。服务器端,它们提供了足够的文档,但除此之外,我不确定。
编辑:我不想知道如何从客户端获取cookie数据 - 我知道如何做到这一点,而是如何直接传递数据(例如用户名和密码)来自客户端,通过javascript。
答案 0 :(得分:3)
有很多关于使用Socket.IO进行授权的文档:https://github.com/LearnBoost/socket.io/wiki/Authorizing(向下滚动到“命名空间授权”和“客户端如何处理全局授权”)
你想要实现什么?这听起来有点像你试图通过Socket.IO“POST”一个用户名/密码。 Socket.IO auth在握手阶段发生,因此您可以切实执行以下操作:
在一般授权后“发出”一个用户名/密码组合(希望你使用的是TLS),并在一个糟糕的身份验证后断开用户(相当平庸的方法IMO)
依赖于auth的服务器端会话信息。这可能是理想的方法,因为您的服务器端handshakeData应该包含您需要确定用户是否被授权的所有内容。在连接到套接字之前,您应该依赖于对HTTP会话进行身份验证,以便每次尝试连接到socket.io时都不会传输用户名/密码组合(如果您退回,这可能会很有用)在XHR上)。有很多关于此的文章,但这是一个良好的开端:http://www.danielbaulig.de/socket-ioexpress/