【发布时间】:2016-05-17 14:22:06
【问题描述】:
当使用 io.socket 发出客户端请求时,例如:
io.socket.post('activity/subscribe')
sails 中的请求对象没有附加会话信息,导致我的身份验证策略失败。
这不是跨域请求,并且已经设置了sails.sid cookie。我使用 redis 作为会话存储,对于 XHR 请求,会话填充正确。
我的理解是,sails 处理套接字的集成,以便当请求到达应用程序的路由时,它可以像任何其他请求一样被处理?
我已经查看了Sails.js authorization for socket requests 中的答案,但由于 req.socket.manager 未定义而失败。 也许这是旧版本的风帆?在 v0.11.0 中。
发送 post 请求后,我在控制台中看到以下内容:
verbose: Receiving incoming message from Socket.io: { method: 'post',
headers: {},
data: {},
url: 'activity/subscribe' }
verbose: Interpreting socket.io message as virtual request to "post activity/subscribe"...
error: policy error here as no session..
【问题讨论】:
-
这绝对可以!您的控制台中是否有任何消息?
-
@sgress454 已更新问题。
-
第一次启动 Sails 时有任何消息吗?试试
sails lift --silly。另外,我假设您也在使用 Redis 进行会话?否则,请确保在启动服务器之前关闭指向该站点的所有浏览器选项卡/窗口,否则您最终会连接到不指向有效会话的套接字。
标签: node.js socket.io sails.js