如何使用Django websockets验证用户身份?

时间:2017-09-24 09:04:56

标签: python django python-3.x django-models django-rest-framework

我尝试创建一个聊天机器人。每个用户都可以创建一个帐户并使用令牌进行身份验证。这是在Django Rest Framework中完成的。创建帐户后,每个用户在PostgreSQL数据库中都有自己的ID。但聊天是基于websockets。我想知道如何在websockets中设置会话,因为我需要知道哪个用户发送消息。所以在我看来,最好的解决方案是使用DRF和websockets来获得相同的ID。或许我错了?我尝试的方式如下所示,但没有积极的结果。

@channel_session_user_from_http
def msg_consumer(message):
    text = message.content.get('text')
    Message.objects.create(
        message=text,
    )
    Group("chat").send({'text': text})

@channel_session_user_from_http
def ws_connect(message):
    # Accept the connection
    message.reply_channel.send({"accept": True})
    # Add to the chat group
    Group("chat").add(message.reply_channel)

    message.reply_channel.send({
        "text": json.dumps({
            'message': 'Welcome'
        })
    })

# @enforce_ordering
@channel_session_user_from_http
def ws_receive(message):

    message.reply_channel.send({"accept": True})
    print("Backend received message: " + message.content['text'])
    Message.objects.create(
        message = message.content['text'],
    )

    Channel("chat").send({
        "text": json.dumps({
             'message': 'Can we start?'
         })
    })

@channel_session_user_from_http
def ws_disconnect(message):
    Group("chat").discard(message.reply_channel)

0 个答案:

没有答案