Хорошо, прочитав документацию по каналам django, я получил ответ. Вот ссылка на документацию https://channels.readthedocs.io/en/1.x/generics.html#sessions-and-users
Сессии и пользователи
Если вы хотите использовать channel_session или channel_session_user с потребителем на основе классов, просто установите одну из переменных в теле класса:
class MyConsumer(WebsocketConsumer):
channel_session_user = True
Это запустит соответствующий декоратор для ваших методов-обработчиков и предоставит message.channel_session и message.user для объекта сообщения - как тот, что передан вашему обработчику в качестве аргумента, так и self.message, так как они указывают на тот же экземпляр.
И если вы просто хотите использовать пользователя из сеанса django, добавьте http_user:
class MyConsumer(WebsocketConsumer):
http_user = True
Это даст вам message.user, который будет таким же, как и request.user при обычном просмотре.
И если вы хотите использовать как пользователя, так и сеанс из сеанса django, добавьте http_user_and_session:
class MyConsumer(WebsocketConsumer):
http_user_and_session = True
Это даст вам message.user и message.http_session.
следовательно, в этом случае мы можем найти зарегистрированного пользователя как:
class ChatConsumer(WebscoketConsumer):
http_user=True
def connect(self, message, **kwargs):
logged_in_user = message.user