每次调用authenticate()后用户密码都会更改

时间:2016-03-15 02:48:06

标签: python django postgresql

我真的有一个奇怪的问题。每次用户登录时(或在调用函数authenticate()后),他们的密码都会随机更改。

这就是我调用authenticate()函数的方法

user = authenticate(username = data['email'], password = data['password'])
raise ValueError("Break")
  

user = authenticate(用户名,密码)//返回成功但更改实例的密码。

     

另一个信息:问题只发生在我的本地但不是在生产中(试图在另一台PC上进行)。

在该行之后,当我在我的数据库中检查密码时,密码会改变(pgAdmin3中的postgresql)。

EDITED

这是登录功能

user = authenticate(username = data['email'], password = data['password'])
if user:
    if not user.is_active:
        raise ValueError("Inactive user.")
    else:
        login(request,user)
        redirect('home')
else:
    raise ValueError("Invalid username/password.")

1 个答案:

答案 0 :(得分:1)

你没有提到你使用的是哪个版本的Django,但是在最近的一个补丁中引入了一个新功能,用于在密码被弱哈希函数散列的情况下加密密码。除此之外,Django 1.9还引入了一些密码强度验证的新功能。 我建议您仔细阅读以下部分,看起来它可能与您的问题有关: https://docs.djangoproject.com/en/1.9/topics/auth/passwords/#password-upgrading

您可以做的另一件事是在set_password()管理器中修改save()(以及可能User)方法,并在调用此函数时引发异常 - 这将为您提供回溯,它可以给你一个提示,为什么/在哪里调用。

相关问题