2

ユーザーにより良いエラー メッセージを提供するために、Django の AuthenticationForm を拡張しています。ログインが失敗する場合は、ユーザーの入力に対して追加のチェックを実行して、ログインが失敗した理由をユーザーに説明する一般的ではないメッセージを提供したいと考えています。

URL:py:

urlpatterns = patterns(
   'django.contrib.auth.views',
    url(r'^login/$', 'login', {'authentication_form': RemoteLoginAwareLoginForm}, name='auth_login'),
)

フォーム.py:

class RemoteLoginAwareLoginForm(AuthenticationForm):
    def clean(self):
      cleaned_data = super(AuthenticationForm, self).clean()
      if self.errors:  # <==== self.errors is {}, even when login will fail
          # Perform additional checks
      return cleaned_data

これを行う正しい方法は上記のように clean() をオーバーライドすることだと思いましたが、示されているように、悪い資格情報でログインした場合でも self.errors は空です。full_clean() と validate() もオーバーライドしようとしましたが、どちらもまったく呼び出されませんでした。

アップデート:

コードが実際にユーザーをログインさせようとするまで、私が探しているエラー (資格情報が無効である) は発生しないことに気付きました。エラーをキャッチできるカスタム ModelBackend を追加しました。 ..しかし、ここにはリクエストがないので、それを報告する方法がわかりません。

これにはカスタムログインビューが必要であるという答えですか?

ありがとう!

4

1 に答える 1