Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

8.6 Работа с WebSocket
5 из 5 шагов пройдено

Связывание пользователей с соединениями

Чтобы связать пользователя с подключением через веб-сокет, вы можете обернуть URLRouter класс AuthMiddlewareStack предоставленными каналами. Это заполнит метаданные о соединении с экземпляром пользователя.

Доступ к метаданным можно получить из атрибута self.scope в потребительском классе. Область действия аналогична request.META Django.

Кроме того, в целях безопасности вы добавите AllowedHostsOriginValidator, который проверяет источник подключения к веб-сокету.

Измените файл asgi.py, как показано ниже:

import os

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import chat.routing
from channels.security.websocket import AllowedHostsOriginValidator

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_channels_chat.settings')

asgi_application = get_asgi_application()

application = ProtocolTypeRouter({
    "http": asgi_application,
    "websocket":
        AllowedHostsOriginValidator(
            AuthMiddlewareStack(
                URLRouter(chat.routing.websocket_urlpatterns)
            ),
        )
})

Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.