@channel_session_user_http message.user始终显示AnonymousUser

时间:2018-07-24 12:12:02

标签: django websocket django-views django-channels

我正在使用channels 1.0.2。我的网站在http://example.com上运行,而websocket在ws://example.com:8080/live_chat/上运行

from channels import Group, Channel
from channels.sessions import channel_session
from channels.auth import channel_session_user, channel_session_user_from_http

@channel_session_user_from_http
def ws_connect(message):
    print message.user
    message.reply_channel.send({"accept": True})
    message.channel_session['rooms'] = []

@channel_session_user
def ws_receive(message):
    print message.user
    print message.channel_session.__dict__
    payload = json.loads(message['text'])
    payload['reply_channel'] = message.content['reply_channel']
    Channel("chat.receive").send(payload)

一切正常。我可以建立连接并来回发送数据。但是,无法获得经过身份验证的用户。即使我已经登录。这是我得到的:

Performing system checks...

System check identified no issues (0 silenced).
July 24, 2018 - 12:03:28
Django version 1.11.11, using settings 'django_project.settings'
Starting Channels development server at http://0.0.0.0:8080/
Channel layer default (asgi_redis.core.RedisChannelLayer)
Quit the server with CONTROL-C.
2018-07-24 12:03:28,147 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,149 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,151 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,153 - INFO - server - HTTP/2 support enabled
2018-07-24 12:03:28,154 - INFO - server - Using native Twisted mode on channel layer
2018-07-24 12:03:28,154 - INFO - server - Listening on endpoint tcp:port=8080:interface=0.0.0.0
2018-07-24 12:03:28,154 - ERROR - server - Couldn't listen on 0.0.0.0:8080: [Errno 98] Address already in use.
2018-07-24 12:03:28,157 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
[2018/07/24 12:03:32] WebSocket DISCONNECT /liveblog/chat/ [157.48.63.134:57801]
[2018/07/24 12:03:33] WebSocket HANDSHAKING /liveblog/chat/ [157.48.63.134:58887]
[2018/07/24 12:03:33] WebSocket CONNECT /liveblog/chat/ [157.48.63.134:58887]
AnonymousUser
{'_SessionBase__session_key': 'chn5c0a3435a8a62fca94710bdcced4c', 'modified': False, '_session_cache': {}, 'accessed': True, 'model': <class 'django.contrib.sessions.models.Session'>, 'serializer': <class 'django.core.signing.JSONSerializer'>}
AnonymousUser

我也尝试过ws_receive(mssage,http_user = true)。但是没有用。

AnonymousUser 。请帮忙!

0 个答案:

没有答案