Django auth.models.User未经过身份验证,但存在于auth数据库中

时间:2013-09-28 13:58:28

标签: django django-authentication

这是一个例子,根据我目前的理解,它应该起作用。下面的代码直接从./manage.py shell

中的测试中复制而来

auth数据库中有一个注册用户:

from django.contrib.auth.models import User
user_in_database = User.objects.all()[0]
print user_in_database.username     #username
print user_in_database.password     #pass

认证测试:

from django.contrib.auth import authenticate
authenticated_user = authenticate(username = user_in_database.username,
                                  password = user_in_database.password)
type(authenticated_user)   #NoneType

它返回None,我原以为它会从数据库返回用户。我错过了一些关键的东西吗?

1 个答案:

答案 0 :(得分:3)

您遗失的是user_in_database.password不是用户的密码。相反,它是实际密码的哈希值(只需打印它来检查自己)。

基本上,当您拨打authenticate时,您没有使用正确的密码。

因此,authentication fails, and returns None(因为这是传递错误凭据时django返回的内容)。