2

这是一个例子,根据我目前的理解,它应该可以工作。下面的代码是直接从testing中复制的./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

它返回无,我原以为它会从数据库中返回用户。我在这里错过了一些重要的东西吗?

4

1 回答 1

3

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

本质上,当您调用 时authenticate,您没有使用正确的密码。

因此,身份验证失败并返回None(因为这是 django 在您传递不正确的凭据时返回的内容)。

于 2013-09-28T14:06:53.553 回答