Django Channels WebSocket Authentication with React: Застряли на Handshake

Я интегрирую Django Channels WebSockets в свое приложение React и столкнулся с проблемой аутентификации пользователей во время рукопожатия WebSocket. Несмотря на то, что все настроено в соответствии с документацией, мое WebSocket-соединение не распознает аутентифицированных пользователей.

Вот как выглядит моя установка:

Django Channels (consumers.py):

from channels.generic.websocket import AsyncWebsocketConsumer
import json

class ChatConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'chat_%s' % self.room_name

        # Join room group
        await self.channel_layer.group_add(
            self.room_group_name,
            self.channel_name
        )

        await self.accept()

React (Chat.js):

import React, { useEffect } from 'react';
import { w3cwebsocket as W3CWebSocket } from "websocket";

const client = new W3CWebSocket('ws://127.0.0.1:8000/ws/chat/room_name/');

const Chat = () => {
    useEffect(() => {
        client.onopen = () => {
            console.log('WebSocket Client Connected');
        };
        client.onmessage = (message) => {
            console.log(message);
        };
    }, []);

    return <div>Chat Component</div>;
};

export default Chat;

Я передаю идентификатор сессии/токен через URL WebSocket, но Django не аутентифицирует пользователя на WebSocket-соединении. Я пропустил часть, где я могу аутентифицировать WebSocket-запрос в Django Channels на основе идентификатора сессии или токена, предоставленного приложением React.

Кто-нибудь сталкивался с подобной проблемой или знает, что мне нужно сделать по-другому? Любая помощь или руководство будут очень признательны!

Вернуться на верх