1

我有一个可以工作的 Feathers 应用程序,它有很多服务身份验证钩子,但 socket.io 过滤器很少。

我不清楚对 socket.io 端点的访问是否需要对用户进行身份验证以及服务挂钩如何影响他们。

那么首先,socket.io 连接是否只允许经过身份验证的用户使用?如果没有,有没有办法可以实现这个限制?

其次,我认为通过 socket.io 发出的数据将是hook.result所有后挂钩执行后的来自服务方法。这样hooks.remove('password')可以防止密码字段通过 socket.io 泄漏。这个假设正确吗?

第三,我想事件会发送给所有连接的用户。这就是为什么我需要指定过滤器来限制将哪些事件发送给哪些用户。有没有办法在 pre-hook 级别进行此类过滤,以避免在 socket.io 级别重复 HTTP 访问控制代码?

4

1 回答 1

2

Feathers 服务挂钩与传输无关。无论是通过 REST HTTP 还是 websockets 访问,身份验证钩子都将起作用。如果可能的话,应该通过客户端来处理身份验证,但也可以直接通过套接字来完成。

在身份验证期间,用户对象将附加到套接字。这就是过滤器connection中( connection.user) 中可用的内容。

虽然remove钩子有点特殊,因为它不会为内部访问而运行,因此另外创建一个过滤器来清理您的数据(总是删除字段)是有意义的。一些提供钩子和过滤器的工作已经在feathers-hooks-common中完成,下一个版本将有更统一的方式同时处理钩子和过滤器。

于 2017-01-17T17:20:13.187 回答