Events socket.io事件的访问控制层?

Events socket.io事件的访问控制层?,events,design-patterns,socket.io,acl,Events,Design Patterns,Socket.io,Acl,我想询问关于在socket.io中使用某种访问控制层的建议/考虑。我还没有找到关于这个话题的任何信息,所以我写在这里。我想知道是否有正确的模式,是反模式还是我的想法可以 一点背景知识 我正在构建一个应用程序,它允许两种不同类型的客户端相互通信。这两种类型的客户端扮演两个不同的角色,比如角色1和角色2。 Role1和Role2在服务器上使用JWT对自己进行身份验证,JWT是他们之前获得的,在连接时通过auth选项发送 Role2的客户可能代表匿名客户。他们可以使用一个特殊的随机代码从服务器检索一个

我想询问关于在socket.io中使用某种访问控制层的建议/考虑。我还没有找到关于这个话题的任何信息,所以我写在这里。我想知道是否有正确的模式,是反模式还是我的想法可以

一点背景知识

我正在构建一个应用程序,它允许两种不同类型的客户端相互通信。这两种类型的客户端扮演两个不同的角色,比如角色1和角色2。 Role1和Role2在服务器上使用JWT对自己进行身份验证,JWT是他们之前获得的,在连接时通过auth选项发送

Role2的客户可能代表匿名客户。他们可以使用一个特殊的随机代码从服务器检索一个特殊的JWT,该JWT允许他们在socket.io服务器上进行身份验证

Role2不能扮演Role1的角色,所以我需要一种方法来控制Role2客户端可以做什么

我的想法

我目前的想法是在事件上引入一个访问控制层。基本上:

  • JWT包含允许客户端发出的事件列表
  • 在服务器端有一个套接字级别的中间件,用于检查JWT中包含的列表是否允许接收到事件。如果是这样,则事件由侦听器处理,否则它将被丢弃。 我想知道我的方法是否有效,或者是否有更好的方法

提前谢谢!你好,我觉得你这样做很好。在io服务器的初始连接上,您可以要求不同的文件来更改连接类型的行为,我还有一个应用程序,用户可以作为管理员、教师、学生和经理进行连接。这些是我的账户角色,它们都有一个共同的区域,在那里它们可以获得相同的数据。除此之外,它们有不同的事件,这取决于它们的尊重类型。所以我相信你在这方面是正确的=)