おいてテストを実施する方法を学びました。次は、日記アプリに認証機能を付けていきましょう。今回は、以下の内容を学んでいきます。認証機能が標準で備わっています。プロジェクトを作成した時点で自動的に組み込まれます。ログイン、ログアウト、パスワード変更および再設定のビューおよびフォームが提供されています。必要最低限の機能が提供されている、といった所でしょうか。サービスでは必須となる「ユーザー登録」のビューおよびフォームがありません。利用してビューおよびフォームを実装する必要があります。一つの注意点として「テンプレート」は用意されていません。基本的な認証処理(=アプリケーション)を実装しているに過ぎず、画面に関しては開発者が自分で作成する必要があります。基本的にテンプレートは作りたいサービスに依存する部分が大きいものであり、仮にテンプレートが提供されていたとしてもそのまま利用することは少ないかもしれません。いえ、サンプルコードがないというのは少々辛いものです。標準認証機能には少々物足りない部分がありますが、それをカバーするパッケージがあります。認証に関する機能が網羅的に入ったパッケージです。特徴を学んでいきましょう。提供するログイン・ログアウトなどの最低限の機能に加えて、ユーザー登録機能のビューとフォームが含まれています。githubページを見てみましょう。allauth/templates/account/を見るとログインやログアウトのビューに対応するテンプレートが一通り揃っています。英語で実装されているため、そのまま利用すると日本向けページとしては使えない部分もあります...が、ひとまず認証機能を実装して画面遷移を確認したいという場合にはテンプレートの存在は非常にありがたいですね。様々な強みがあります。ソーシャルアカウントの連携もサポートしていたり、ログイン失敗回数制限などのセキュリティ面も考慮されています。認証機能について考えるときは、もう1点重要なことがあります。それは「どのようなユーザーモデルに対して認証をかけるのか?」という点です。モデルと同様、ユーザーも専用のモデルが必要です。モデルを利用するのであれば、特に自分でユーザーモデルを実装する必要はありません。モデルではなく、(たとえデフォルトのユーザーモデルで機能が十分であったとしても)カスタムユーザーモデルを作成することを強く推奨しています。いうユーザーモデルの雛形を継承したモデルのことです。デフォルトのユーザーの利用が推奨されない理由は、ユーザーというものが他のデータテーブルに依存することが多いです。関係を持っているような場合)そのため、プロジェクトの途中からユーザーモデルそのものを差し替えようとすると、データベース上の不祥事が起こりやすくなるためです。プロジェクトの初めからカスタムのユーザーを利用することでデータベース上でのトラブルを避けることができます。カスタムのユーザーモデルを実装しよう!それでは、カスタムのユーザーモデルを実装してみましょう!まずカスタムユーザーモデルを記述するアプリケーションを作ります。追加12]では、いよいよカスタムユーザーを実装していきましょう。カスタムユーザーの実装では「カスタムユーザーモデルに対応するクラス」と「ユーザー作成を担うメソッドを持ったクラス」の合計2つのクラスを実装する必要があります。ユーザー作成を担うメソッドを持ったクラスまず「ユーザー作成を担うメソッドを持ったクラス」を実装していきましょう。以下のコードを記載しましょう。メソッドは、それぞれ一般ユーザーと管理者ユーザーを作成するメソッドです。管理下におかれるカスタムユーザーモデルを作成します。以下のコードを追記しましょう。実装コードの一部を以下に掲載します。入ると管理サイトにアクセス可能)といったユーザーの状態を表す変数が最初から組み込まれています。値など)を変えたい場合には、適宜変数をオーバーライドすればOKです。'accounts.CustomUser'以上の工程でカスタムユーザーの実装は完了です!マイグレーション作成したユーザーモデルのマイグレーションを実施しましょう!下記のコマンドを実行して下さい。実行では下記のような表示が出てきます。CustomUserでは、これまでのコードの確認の意味を込めて、ユーザーを一つ作ってみましょう。通してスーパーユーザーを作ってみましょう!以下のコマンドを実行して下さい。createsuperuserユーザー名、メールアドレス、パスワードの3つが尋ねられるので、適宜入力をして下さい。コマンドを通して作成したユーザーを確認してみます。プロンプトが表示されればOKです。いうクエリを実行してみましょう。以下のようにユーザー情報が確認できるはずです(パスワードは暗号化されています)。16:12:26.910746ちなみにaccounts_customuserというテーブルは「アプリ名_モデルクラス名」という形式となっています。対話型シェルを通してもモデルデータを確認することができます。下記のコマンドを実行してみましょう。コードを1行ずつ入力してみましょう。2つ目のコード4CustomUser.objects.all()こちらの場合も以下のようにユーザーモデルの情報が得られます。メソッドがメールアドレスを返すようにしてるためです。おける認証の概要とカスタムユーザーの作成のポイント以下です。アプリをプロジェクトに組み込みます。アプリ全部で4つのアプリを追加します。下に、下記の一行を加えましょう。利用したプロジェクトでなければ動かない仕組みになっています。プロジェクトの識別値です。アプリケーションです。ソーシャルアカウントによる認証機能に必要なものです。内容を参照しているため、ソーシャルアカウント認証を使わない場合でもアプリ追加が必須となります。設定値の意味は、コードの隣に記載したコメントの通りです。全部で3つの選択肢があります。メール検証をそもそも行ないません。以下のように編集しましょう。追加8]ユーザー登録をしてみようこれで設定完了です。アクセスしてみて下さい。設定通り、メールアドレス、ユーザーネームそしてパスワードを尋ねられますので、全て入力してユーザー登録を実行してみて下さい。しているにも関わらず、メールの配信の仕組みを設定していないからです。戻り、下記の一行を追加してみて下さい。'django.core.mail.backends.console.EmailBackend'これはメールをコンソール上に出力するための設定です。通常のサービスでしたらメール配信用サーバーを立てる必要がありますが、それだけでもなかなか大変なので、今回はコンソール出力とします。再度では、もう一度ユーザー登録を実施してみましょう。今度こそユーザー登録できる!...と思ったかもしれませんが、残念ながら同じメールアドレスもしくは同じユーザーネームを設定した場合には、ユーザー登録が弾かれてしまったのではないでしょうか?ここはひとまず、異なるメールアドレスとユーザーネームを与えて登録をし直してみて下さい。エラーでは、メール配信は失敗したものの、ユーザーオブジェクトの作成は完了していたということを意味していますので、メール配信周りの設定には注意をしましょう。コンソールコンソール画面を覗いてみて下さい。以下のようなメールが届いているはずです。アクセスすると以下のような画面が現れます。直にアクセスしましたが、ログアウトのリンクは私たちが作っているアプリ内部に貼りたいところです。ログアウトビューへの逆引き名となっています。確認ログイン後、トップページが以下のようになります。使って、ユーザー登録やログイン・ログアウトなど認証系の機能を実装しました。今回の記事のポイント以下の点です。タグにビューの逆引き名を記載する次回はいよいよ最終回です。技術力で世の中をもっと面白くエンジニア積極採用中!ライトコードでは、エンジニアを積極採用中!ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。4拠点で事業展開するIT企業です。現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。インターンや新卒採用も行っております。Studioモリ(エンジニア)2024.10.31immichを知ってほしいIT技術immichキムくん(エンジニア)2024.10.31ブログ一覧エンジニア大募集中!ライトコードでは、エンジニアを積極採用中です。WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!また、フリーランスエンジニア様も大募集中です。