認証バックエンドをカスタマイズしてログイン方法を変更する」です。これまで、Django標準のログイン方法としてユーザー名とパスワードでログインするログイン画面でした。メールアドレスでログインする方法に変更したい場合もあると思います。今回はDjangoのユーザー認証について見ていきましょう。独自カスタマイズのユーザーを使用する」まで読まれた方を対象としています。そのためサンプルソースコードが省略されている場合があります。Djangoのログインの仕組みdjangoの認証は認証用のバックエンドによって行われます。このバックエンドはsettings.pyのAUTHENTICATION_BACKENDSに設定します。AUTHENTICATION_BACKENDSのデフォルト値は’django.contrib.auth.backends.ModelBackend’1つですが、バックエンドは配列として追加することが出来ます。Djangoの認証はdjango.contrib.auth.authenticate関数で行われます。このauthenticate関数が呼ばれるとAUTHENTICATION_BACKENDSに記載されたバックエンドのauthenticate関数を順番に呼び出します。認証に失敗すれば次のバックエンドを呼び出します。認証に成功すれば、認証されたユーザーを返す仕組みです。今回は独自に実装したフォームの中のclean関数をオーバーライドしてauthenticate関数を呼び出し認証処理を行います。認証に失敗した場合はバリデーションエラーを返す仕組みです。認証バックエンドをカスタマイズするデフォルトのModelBackendに加えてカスタマイズしたバックエンドを追加しましょう。accounts/backends.pyを新規作成します。ファイル名はこの名前でなくても大丈夫です。user作成したバックエンドを設定に追加する作成したバックエンドを追加するためにはmysite/settings.pyに追加します。インポートが多いのでEmailAuthenticationForm以外のクラスも表示していますが、追加するのはEmailAuthenticationFormのみです。このEmailAuthenticationFormはdjango.contrib.auth.form.AuthenticationFormをベースとしてメールアドレス用に修正しています。]メールアドレスでのログイン用フォームを用意するメールアドレスで認証するためのフォームを作成していきます。)最初の解説でも触れましたが、clean関数内でauthenticate関数を呼び認証処理を行っています。することで各バックエンドを呼び出して認証することが出来ます。作成したEmailAuthenticationFormを使用するようにビューを変更しましょう。EmailAuthenticationFormurlに関しては変更ないですが、念の為表示しておきます。name="change"),]動作確認では動作確認をしていきましょう。これまでユーザー名でログインする画面でしたがメールアドレスでログイン出来るようになればOKです。最後にDjangoにおける認証の仕組みについて理解が深まれば幸いです。次回はログインユーザーのみが投稿出来るように修正していきます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ログイン状態に応じて動的に入力フォームを変化させる検索:このブログを書いてる人クロLinuxが好きなプログラマ。スマートフォンアプリやWEB関連の開発をやっています。「クロの思考ノート」も運営してます。お仕事のご依頼は下記までお願いします。