我基本上在django频道的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
为真,我应该如何拒绝/删除连接?
答案 0 :(得分:2)
拒绝连接尝试时的连接非常简单:如果您不想建立连接,请不要发送接受消息。通道将在配置的时间后自动关闭(默认为5秒或smth)。
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的发行说明中列出。
答案 1 :(得分:0)
这样做:
be_friend_since = models.DateField(blank = True)