当前位置: 首页 > 知识库问答 >
问题:

带有Django认证的Tornado

桂浩言
2023-03-14

以下是我的想法:

  • 有一个Django网站,可以接收/发送JSON信息,这样我就可以为Webbrowser或Unity/UE客户端创建一个JavaScript客户端
  • 我只想为Unity/UE客户端提供一个新功能:实时聊天

我想在特定端口上使用tornado服务器,比如说8666

以下是我到目前为止所做的:

  • 在Django网站上验证
  • 让Django网站上的一切工作

现在我想让客户端连接到端口8666(纯TCP)并发送一些东西(可能是他的会话cookie或其他东西),这样我就可以在tornado web服务器上查看客户端是否经过身份验证,并查看数据库,找出tornado web服务器上也连接了哪些其他伙伴,因此,当这个客户机写东西时,我可以将他的消息发送给所有其他“相关”连接的客户机。

我没有找到任何留档。你知道怎么处理吗?任何例子,或者如果我没有在正确的轨道上,我该怎么办?

共有1个答案

董弘新
2023-03-14

如果Tornado进程与Django应用程序在同一个域上运行,那么会话cookie将在websocket握手时由浏览器发送,并可通过WebSocketHandler访问。获取_cookie()方法

下面是一个例子,假设一个全局变量CLIENTS跟踪连接的真实客户端:

def open(self):
    """Authenticate client based on session cookie, add broadcast notification"""
    session_id = self.get_cookie('sessionid')
    if not session_id:
        self.close()
    self.authenticate_user(session_id)
    if self.user is None:
        self.close()
    self.CLIENTS.append(self)
    self.notify_all_clients()

def authenticate_user(self, session_id):
    """Retrieve User instance associated to the session key."""
    session = SessionStore(session_key=session_id)
    user_id = session.get('_auth_user_id')
    if user_id is None:
        return
    try:
        user = User.objects.get(pk=user_id)
    except User.DoesNotExist:
        self.close()
    else:
        self.user = user

希望这能有所帮助!

编辑:

请注意,为了能够使用Django ORM,必须将Django_设置_模块环境变量设置为应用程序的设置模块路径(例如'myapp.SETTINGS',确保可以通过sys.path找到它),然后调用setup(),如Django文档中所述。

 类似资料:
  • 我试图使用证书对本地托管的Kubernetes集群(V1.6.4)进行身份验证。这是在使用Jenkins的Kubernetes插件的上下文中进行的。 > 将客户端证书转换为PKCS: 在Jenkins中,使用证书创建凭据 : :和上载文件 :(在证书创建过程中指定) null 2017年09月05日上午10:22:03 IO.fabric8.kubernetes.client.config try

  • 本文向大家介绍带你认识Django,包括了带你认识Django的使用技巧和注意事项,需要的朋友参考一下 Django简介: Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是

  • 问题内容: 我已经阅读了《 Django Rest Framework指南》并完成了所有教程。一切似乎都有意义,并且按应有的方式工作。我得到了如上所述的基本身份验证和会话身份验证。 http://django-rest-framework.org/api-guide 但是,我在文档的令牌认证部分苦苦挣扎,它缺少或没有教程那么深入。 http://django-rest-framework.org/

  • 本文向大家介绍浅谈django中的认证与登录,包括了浅谈django中的认证与登录的使用技巧和注意事项,需要的朋友参考一下 认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否正确 一般需要username  password两个关键字参数 如果认证信

  • 我有一个使用Spring Boot实现的应用程序,我在其中使用Spring Security进行身份验证。我已经有了“基于令牌的”身份验证,其中要求客户端检索令牌,然后在后续请求中使用该令牌进行身份验证。 我希望对此进行增强,以便令牌可以被限制为特定主机名,因此只能用于来自该主机的请求。这类似于谷歌地图API对其API密钥所做的操作,可以通过IP或主机名来限制它们。 以下是我实现的代码,用于尝试检

  • 我需要为REST API创建kafka源连接器,并使用头验证,如curl-H“Authorization:Basic”-H“clientID:”“https: 我还尝试使用“connector.class”:“com.tm.kafka.connect.rest.RestSourceConnector”,我的joson文件如下 但没有希望。知道如何通过身份验证获取RESTAPI数据。我的身份验证参数