1
私はdjangoプロジェクトでカスタム認証バックエンドを使用しています。 djangoシェルを使用してユーザーを作成しました。パスワードを入力してauthenticate
メソッドを使用して認証しようとすると、Noneが返されます。Djangoはカスタム認証用パスワードハッシャーを有効にします
私はパスワードハッシュと関係があると分かりました。
データベースに保存されているパスワードは、pbkdf2_sha256$24000$c0t.....
です。
djangoでハッシングを使用する方法を知りたいですか?
Settings.py:
AUTHENTICATION_BACKENDS = ('login_app.backends.LoginBackend',
'django.contrib.auth.backends.ModelBackend')
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
カスタムバックエンド:
def authenticate(self, email=None, password=None):
try:
user = User.objects.get(email=email)
if password == user.password:
return user
else:
return None
except User.DoesNotExist:
return None
編集:私は手動でプレーンテキストにはpostgresにパスワードを変更した場合、それが動作します。ハッシュされたパスワードで認証を使用する方法。
なぜ閉じるのですか?ちょっと理由を挙げて.. –