【发布时间】:2017-02-24 21:01:16
【问题描述】:
我开始创建一个应用程序,我将使用 SignalR 使其实时工作。该应用要做的一件事是只允许与某些已连接的客户端进行通信,仅允许与某个组中的客户端通信。
正如我在一些示例中看到的,我应该让客户端向服务器发送一个组名,然后将用户连接 ID 添加到一个组中,然后我只能向其中的用户发送数据与连接的客户端相同的组。
所以我的问题是,例如,想象一个学校聊天应用程序,我希望只有一个班级的法律学生可以访问该班级的聊天组,所以我想传递给加入组的 GroupName 应该不会被更改,并且我希望它不会显示给查看页面源代码的某些用户,我将如何做这样的事情?
我想在渲染 Razor 页面时,我会获取一些有关用户及其所属组的信息,并创建一个加密密钥,该密钥将在服务器上解密以将用户添加到正确的组,它会工作吗?但问题是每个连接的用户的加密密钥都是相同的,因为输入总是相同的,对吧?每个连接的密钥不会不同,因此有些人可以获得密钥并对其进行解密...
所以我想要一些类似于 BCrypt Hash 的东西,它可以为相同的输入生成不同的输出,但我希望能够反转服务器上的密钥以将用户添加到正确的组中。
知道我该怎么做这样的事情吗??
【问题讨论】:
-
用户在使用聊天时是否经过身份验证?在这种情况下,解决方案很简单,但我只是要求在实际回答问题之前确认
-
是的,他们是经过认证的。就像,我扫描一个二维码,所以我可以访问一个“房间”,每个房间都有某种管理员,他们实际上必须登录,他们将能够与房间的客户和其他房间的管理员
-
并且应该有一个选项,管理员可以直接与其中一位客户私下交谈。
标签: javascript jquery asp.net encryption signalr