Django会议新手, 我要防止从同一个凭据多次登录。在
class UserManager(models.Model):
"""
It hold session_key used for log-in for particular user.
"""
user = models.OneToOneField(User, db_index=True)
session = models.OneToOneField(
Session, null=True, on_delete=models.SET_NULL
)
def session_post_save(**kwargs):
session = kwargs['instance']
uid = session.get_decoded().get('_auth_user_id')
if uid:
profile = UserManager.objects.get(user__id=uid)
# delete old session
if profile.session:
profile.session.delete()
# update session value
profile.session = session
profile.save()
post_save.connect(session_post_save, sender=Session,
dispatch_uid='session_post_save_add_usermanager')
问题是,我不明白为什么session_post_save方法被调用了两次?还是会议工作?在
当用户login()
方法异常并且session.get_decoded().get('_auth_user_id')
为None时,第一次调用它,然后在某个函数django/contrib/sessions/backends/base.py(279)cycle_key()
中会话get被删除。不知道为什么?在
又插回去了。
第二次调用session\u post_save方法时返回响应,session.get_decoded().get('_auth_user_id')
不是None。在
谢谢
这是另一个问题,并对IP地址提出了一些建议,关于如何实现这一点
detect multiple logins into a Django web application
相关问题 更多 >
编程相关推荐