在django频道2.1.2中,我们可以通过以下方式获取经过身份验证的登录用户:
class ChatConsumer(AsyncConsumer):
async def websocket_connect(self,event):
logged_in_user = self.scope['user']
从channels.generic.websockets继承WebsocketConsumer时,如何查找已登录用户(如果使用频道1.1.8)
class ChatConsumer(WebsocketConsumer):
def connect(self, message, **kwargs):
logged_in_user = ?
答案 0 :(得分:0)
在阅读了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