2

これが私の現在の理解ではうまくいくはずの例です。以下のコードは、テストから直接コピーされます./manage.py shell


認証データベースに登録済みのユーザーがあります。

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 を返します。データベースからユーザーを返すと予想していました。ここで重要な何かが欠けていますか?

4

1 に答える 1

3

あなたが見逃しているのは、それuser_in_database.passwordがユーザーのパスワードではないということです。代わりに、実際のパスワードのハッシュです (印刷して確認してください)。

基本的に、 を呼び出すときはauthenticate、正しいパスワードを使用していません。

そのため、認証は失敗し、返されますNone(これは、間違った資格情報を渡したときに django が返すものであるためです)。

于 2013-09-28T14:06:53.553 に答える