gpt4 book ai didi

python - 在 Django 中检测更改的密码

转载 作者:行者123 更新时间:2023-11-28 20:03:22 25 4
gpt4 key购买 nike

当用户更改密码时,我想发送一个信号,以便我可以在某些模型上做一些事情。

我怎样才能创建这个信号?

我查看了用户的 post_save 信号:

post_save.connect(user_updated, sender=User)

但是,里面似乎没有任何东西可以让我检查密码是否被更改:

def user_updated(sender, **kwargs):
print(kwargs) # {'created': False, 'raw': False, 'instance': <User: 100002>, 'update_fields': None, 'signal': <django.db.models.signals.ModelSignal object at 0x7ff8862f03c8>, 'using': 'default'}

我还看到有一个 password_change_done 授权 View ,但我不确定如何使用它。 https://docs.djangoproject.com/en/1.10/topics/auth/default/#built-in-auth-views

有什么想法吗?

最佳答案

你可以使用 pre_save信号。 kwargs['instance'] 将包含更新密码,您可以使用 User.objects.get(id=
user.id).password

@receiver(pre_save, sender=User)
def user_updated(sender, **kwargs):
user = kwargs.get('instance', None)
if user:
new_password = user.password
try:
old_password = User.objects.get(pk=user.pk).password
except User.DoesNotExist:
old_password = None
if new_password != old_password:
# do what you need here

关于python - 在 Django 中检测更改的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41413423/

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