К сожалению, я использую каналы django-каналов 1.1.8, так как я пропустил все
Обновление каналов 2.0. Обновление сейчас нереально, так как мы только что
запущен, и это займет некоторое время, чтобы выяснить правильно.
Вот моя проблема:
Я использую * message.user.id *, чтобы различать аутентифицированные
пользователи, которым я должен отправлять сообщения. Однако есть случаи, когда я буду
необходимо отправлять сообщения не прошедшим проверку подлинности пользователям - и это сообщение
зависит от внешнего вызова API. Я сделал это в ws_connect () :
@channel_session_user_from_http
def ws_connect(message):
# create group for user
if str(message.user) == "AnonymousUser":
user_group = "AnonymousUser" + str(uuid.uuid4())
else:
user_group = str(message.user.id)
print(f"user group is {user_group}")
Group(user_group).add(message.reply_channel)
Group(user_group).send({"accept": True})
message.channel_session['get_user'] = user_group
Это только первая часть вопроса, в основном я добавляю случайный
Строка для каждого экземпляра AnonymousUser. Но я не могу найти способ получить доступ
эта строка из объекта запроса в представлении, чтобы определить , кто
Я отправляю сообщение на .
Это вообще достижимо? Сейчас я не могу получить доступ к чему-либо установленному в
ws_connect на мой взгляд.
РЕДАКТИРОВАТЬ: Следуя совету Kagronick, я попробовал это:
@channel_session_user_from_http
def ws_connect(message):
# create group for user
if str(message.user) == "AnonymousUser":
user_group = "AnonymousUser" + str(uuid.uuid4())
else:
user_group = str(message.user.id)
Group(user_group).add(message.reply_channel)
Group(user_group).send({"accept": True})
message.channel_session['get_user'] = user_group
message.http_session['get_user'] = user_group
print(message.http_session['get_user'])
message.http_session.save()
Однако http_session
равно None
, когда пользователь AnonymousUser
. Другие декораторы не помогли.