4

我正在使用 WAMP.ws 规范在我的网站上设计公共/私人用户聊天室。

当我尝试保留所有已连接用户的列表时,我的问题就出现了。我能做什么:

  1. 所有用户都订阅“/contacts/connections”主题。
  2. 当用户连接时,他会发布带有“user_id”参数的“hello”消息,告诉其他用户他已连接。

--> 但是我怎样才能信任用户呢?任何用户都可以发送带有随机“user_id”参数的“Hello”消息。

对我来说,服务器必须在广播消息之前进行一些检查。但它是否符合 WAMP.js 规范?我读过发布的消息总是由服务器广播。

另一种解决方案可能是使用 RPC 调用来连接用户。实际上,我这样做是为了验证用户。但是服务器可以自己广播一个事件到主题“/contacts/connections”吗?(在 RPC 调用之后,而不是在“发布”消息之后)我已经读到事件只是来自客户端的“发布”的直接结果。此外,这不会阻止普通用户发送事件跟踪“/contacts/connections”主题,该主题将由服务器广播。

我觉得我的两个解决方案(在广播之前检查发布的消息,或者在 RPC 调用之后由服务器广播事件)都违反了 WAMP.js 规范。我错了吗 ?

谢谢

4

1 回答 1

6

WAMP 区分

  1. 验证
  2. 授权
  3. 验证

身份验证在 WAMP 路由器上建立 WAMP 客户端的身份。

当使用Autobahn|Python推出您自己的 WAMP 路由器时,这里有多个示例展示了如何实现不同的身份验证机制。

当使用Crossbar.io(一个集成的、生产就绪的 WAMP 路由器)时,内置了身份验证机制(此处)。


授权确定是否允许给定 WAMP 客户端对给定 URI 执行 WAMP 操作(如发布或调用)。

当使用Autobahn|Python推出您自己的 WAMP 路由器时,这里有一个示例展示如何实现自定义授权。

Crossbar.io 有一个内置的静态授权方案,并允许注册自定义 WAMP 程序以进行授权(此处)。


最后,还有Validation,它检查事件或调用的应用程序级有效负载。

是 Autobahn|Python 的示例。Crossbar.io 很快将允许注册自定义 WAMP 程序以进行验证。


于 2013-11-07T22:43:49.460 回答