我有一个有效的Feathers应用程序,它有很多服务认证挂钩,但很少有socket.io过滤器。
我不清楚访问socket.io端点是否要求用户进行身份验证以及服务挂钩如何影响用户。
首先,socket.io连接是否只允许经过身份验证的用户使用?如果没有,有没有办法实现这个限制?
其次,我认为在执行所有后挂钩后,通过socket.io发出的数据将是来自服务方法的hook.result
。因此hooks.remove('password')
会阻止密码字段通过socket.io泄漏。这个假设是否正确?
第三,我想将事件发送给所有连接的用户。这就是为什么我需要指定限制哪些事件发送给哪些用户的过滤器的原因。有没有办法在pre-hook级别进行这样的过滤,以避免在socket.io级别复制HTTP访问控制代码?
答案 0 :(得分:1)
Feathers服务挂钩与传输无关。无论是通过REST HTTP还是websockets访问,身份验证挂钩都将起作用。如果可能,应该处理through the client身份验证,但也可以done through sockets directly。
在身份验证期间,用户对象将附加到套接字。这是filter中connection
(connection.user
)中可用的内容。
remove
挂钩是一种特殊情况,但因为它不运行内部访问,所以另外创建一个也清理数据的过滤器(总是删除字段)是有意义的。在feathers-hooks-common中已经完成了一些提供钩子和过滤器的工作,下一个版本将有一个更统一的方法同时处理钩子和过滤器。