Как можно использовать сочетание аутентифицированных и неаутентифицированных веб-сокетов с помощью Django Channels?
Я запускаю приложение Django с DRF и Channels и настроил несколько веб-сокетов, один из которых должен быть открытым/небезопасным. Однако все, что я могу понять, это как включить/выключить безопасность на уровне приложения, а не на уровне конкретного потребителя.
Вот конфигурация asgi.py:
application = ProtocolTypeRouter(
{
"http": django_application,
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(URLRouter(websocket_routing.websocket_urlpatterns))
)
}
)
Альтернативно, чтобы отключить аутентификацию, я могу переключить запись websocket на URLRouter(websocket_routing.websocket_urlpatterns)
С помощью представлений DRF достаточно легко отключить аутентификацию:
class WebhookCallEvents(APIView):
authentication_classes = []
permission_classes = []
Но эти свойства, похоже, не работают в классе-потребителе:
class MyConsumer(AsyncWebsocketConsumer):
authentication_classes = []
permission_classes = []
Как включить аутентификацию для одних сокетов, но отключить ее для других в рамках одного приложения?
Похоже, что это дубликат этого вопроса здесь: Django Channels 2 websockets multiple AuthMiddlewareStacks
Однако ни один из ответов не принимается, так что, возможно, переформулировка вопроса даст какие-то результаты.