authentication - socket.io 客户端命名空间授权

标签 authentication node.js authorization real-time socket.io

Node.js 似乎有能力在文档不足或没有文档的情况下获取有用的模块。 socket.io 就是这样一个模块。我想对命名空间使用内置的授权功能,但我不知道在客户端这将如何工作。服务器端,他们提供了足够的文档,但除此之外我不确定。

编辑:我不想知道如何从客户端获取 cookie 数据——我知道该怎么做,但我知道如何直接从客户端传递数据(例如用户名和密码)客户端,通过 javascript。

最佳答案

有很多关于使用 Socket.IO 进行授权的不错的文档:https://github.com/LearnBoost/socket.io/wiki/Authorizing (向下滚动到“命名空间授权”和“客户端如何处理全局授权”)

您具体要实现什么目标?这听起来有点像您试图通过 Socket.IO“发布”用户名/密码。 Socket.IO 身份验证发生在握手阶段,因此您可以切实可行地执行以下操作:

  • 在一般授权后“发出”用户名/密码组合(希望您使用的是 TLS)并在错误授权后断开用户连接(IMO 非常平庸的方法)

  • 改为依赖服务器端 session 信息进行身份验证。这可能是所需的方法,因为您的服务器端 handshakeData 应该包含您需要确定用户是否已授权的所有内容。在连接到套接字之前,你应该依赖于对 HTTP session 进行身份验证,这样你就不会在每次尝试连接到 socket.io 时都传输用户名/密码组合(如果你回退,这可能会很多)在 XHR 上)。有很多关于此的文章,但这是一个好的开始:http://www.danielbaulig.de/socket-ioexpress/

关于authentication - socket.io 客户端命名空间授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528597/

相关文章:

javascript - 在 node.js 中传递对 express-resources 的引用?

javascript - 如何在嵌套函数调用中使用 promises

javascript - 在 Jade 和 Javascript 中动态创建具有不同 id 的模态

android - 在 Android SQLite 中检查用户是否登录

java - Spring 安全: Add custom message for authentication failure ( "Bad Credentials" to "Invalid Credentials")

python - 使用 python 后端的客户端授权

asp.net-mvc - ASP.Net MVC 5 身份角色添加到数据库但 User.IsInRole 总是返回 false

api - RESTful API 中的多个身份验证级别

authentication - 如何在 .net core API 中撤销 JWT Bearer Token

reactjs - 使用 React Context 中的使用效果检查本地存储中是否已有 token 的最佳方法