FeathersJS - 确保只有注册的用户才能获得"users created"



我想确保只有发送注册/"用户创建"消息的套接字才能获得相应的"用户创建"响应。文档中有一个简单的示例,如下所示:

// Publish the `created` event to admins and the user that sent it
app.service('users').publish('created', (data, context) => {
return [
app.channel('admins'),
app.channel(app.channels).filter(connection =>
connection.user._id === context.params.user._id
)
];
});

但是这对我不起作用。如果我记录 context.params 对象,这在注册新用户时看起来就像这样:

{ query: {},
route: {},
connection: { provider: 'socketio' },
provider: 'socketio' }

因此,相应的连接不会获取事件。我在这里错过了什么吗?我是否必须在注册过程中添加一些内容才能正常工作?多谢!

最简单的解决方案是根本不担心将实时事件调度给该用户。如果同一连接已经在调用.create则该承诺的结果(.create(data).then(userData => {})(将与调度的事件相同。

如果您仍希望新创建的用户加入某些频道,您可以在 after 挂钩中使用params.connection,如本期所示:

app.service('users').hooks({
after: {
create(context) {
const { params: { connection }, result } = context;
if(connection) {
context.app.channel(`user/${result.id}`).join(connection);
}
return context;
}
}
});

相关内容

  • 没有找到相关文章

最新更新