如何在Django中设置访问受限的聊天室?也就是说,我们只允许来自在特定聊天室注册的用户的连接?

如何在Django中设置访问受限的聊天室?也就是说,我们只允许来自在特定聊天室注册的用户的连接?,django,websocket,django-channels,Django,Websocket,Django Channels,我最近与一位朋友和他的同事一起创建了一个类似社交网络的网站。我有相当大的编程经验,但没有Django的经验。朋友们一般都有中级经验,但对Django的经验明显比我多 我们希望实现聊天室,其行为类似于WhatsApp组:在发生某些事件时,服务器可以向特定聊天室添加用户,反之也可以删除用户。用户可以在连接时向聊天室发送和接收消息,并检索自上次联机以来错过的旧消息 我的问题是,不需要询问实施该系统的标准方法。我们已经有聊天室,每个人都可以通过正确的URL加入。然而,这显然是不够的,因为我们还不能限制访

我最近与一位朋友和他的同事一起创建了一个类似社交网络的网站。我有相当大的编程经验,但没有Django的经验。朋友们一般都有中级经验,但对Django的经验明显比我多

我们希望实现聊天室,其行为类似于WhatsApp组:在发生某些事件时,服务器可以向特定聊天室添加用户,反之也可以删除用户。用户可以在连接时向聊天室发送和接收消息,并检索自上次联机以来错过的旧消息

我的问题是,不需要询问实施该系统的标准方法。我们已经有聊天室,每个人都可以通过正确的URL加入。然而,这显然是不够的,因为我们还不能限制访问

到目前为止,我们使用的是Django频道,并且我们已经按照标准建立了公共聊天室

我已经看过了。然而,我不愿意将其集成,因为我试图避免项目与软件包的混乱,更重要的是,我试图最小化我们,特别是我,目前必须学习的新技术

我的一个想法是将所有能够访问聊天室的用户存储在聊天室的模型中。当有人随后试图连接聊天室时,我们动态地只允许用户在这些存储的用户中注册。但是,对于这种方法,我有性能、安全性和可维护性方面的顾虑,作为初学者,我目前无法正确评估。这就是我在这里寻求帮助的原因。更具体地说,我想问的是,是否有任何既定的最佳实践,我认为,由于这项工作的平凡性和简单性,有很多最佳实践

我很感谢你的帮助和建议。祝你有美好的一天!
您好,Marc:D

我建议您使用DB模型来跟踪房间,然后再与用户建立多对多关系,这是最好的方法

然后在consumer中,您可以检查连接的用户是否具有访问权限。此检查只需在使用者的connect方法中进行,因此不会对性能造成太大影响

从安全角度来看,您需要处理的主要问题是用户身份验证,这将在很大程度上取决于您计划如何使用websocket,如果用户已经登录到同一个域,它是否仅通过网页使用,或者它是否将被跨域或从客户端(移动/桌面)应用程序使用