我在Django User模型的代理类上定义了一个deactivate方法,以防止它们登录(例如,如果它们是过期的),但是如果它们仍然登录,我想让它们全部无效会话。
是否有Django认可或Pythonic方式来做到这一点?
由于Sessions是编码的,因此不宜迭代它们并对每一个进行解码以找到与该用户相关的那些。我已经看过Django支持的密码更改失效会话,但在我的情况下,用户没有更改自己的密码,而是强迫他们注销。这是我的CustomUser模型:
class CustomUser(User):
class Meta:
proxy = True
def deactivate(self):
if self.is_active:
self.is_active = False
self.save()
def activate(self):
if not self.is_active:
self.is_active = True
self.save()
答案 0 :(得分:0)
在session_data上使用Session.objects.distinct()结束,将集合从130万减少到大约7000个唯一的session_data哈希值。整洁的技巧,但真的希望Django有一个规定的解决方案。