我为Django用户模型在代理类上定义了一个deactivate方法,以防止他们登录(例如,如果他们已经过期),但是如果他们仍然登录,我希望使他们的所有会话失效。在
有没有一种Django认可的或Python式的方法来做到这一点?在
因为会话是编码的,所以最好不要遍历它们并对每个会话进行解码以找到与该用户相关联的会话。我已经研究过关于密码更改的无效会话,Django支持这种方法,但是在我的例子中,用户没有更改自己的密码,而是我强迫他们注销。这是我的客户用户模型:
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()
最终使用Session.objects.distinct()会话上的数据,将集合从130万个减少到大约7000个唯一会话数据哈希。很好的技巧,但真的希望Django有一个处方的解决方案。
相关问题 更多 >
编程相关推荐