gpt4 book ai didi

python - 使用 django channel 拒绝未经身份验证的用户访问

转载 作者:行者123 更新时间:2023-12-01 02:41:25 25 4
gpt4 key购买 nike

我基本上正在寻找 django channel 的 login_required/LoginRequiredMixin 等效项。该文档有一个 authentication section ,它描述了如何获取用户,但它似乎错过了实际上拒绝未经身份验证的用户访问的部分。

from channels.generic.websockets import JsonWebsocketConsumer

class MyConsumer(JsonWebsocketConsumer):

channel_session_user = True

def connection_groups(self, **kwargs):
return ["test"]

def connect(self, message, **kwargs):
print message.user # AnonymousUser
self.send({"accept": True}) # False here still accepts and sends a message

如果 message.user.is_anonymous 为 true,我应该如何拒绝/删除连接?

最佳答案

拒绝连接尝试的连接就像这样简单:如果您不想建立连接,则根本不发送接受消息。 channel 将在配置的时间(默认为 5 秒或类似的时间)后自动关闭。

def connect(self, message, **kwargs):
if not message.user.is_anonymous:
self.send({"accept": True})

如果您不想等待并立即关闭连接,只需发送 {"close": True} 即可:

def connect(self, message, **kwargs):
if not message.user.is_anonymous:
self.send({"accept": True})
else:
self.send({"close": True})

为了完整起见,以下是 channels docs 的解释。遗憾的是,这些信息并未在文档本身中列出,仅在 v1.0 的发行说明中列出。

关于python - 使用 django channel 拒绝未经身份验证的用户访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com