Django-Rest-Authのインストール、初期設定とログインまわり認証準備

この記事では、Django-Rest-Authのインストール、初期設定とログインまわり認証準備の方法について解説します。

 

最近では、iOS,androidや、シングルページのアプリケーションのログイン周りの開発は、Firebase を利用する場合も多いと思います。

セキュリティーも万全で、確実に処理をこなせる非常に便利なサービスではありますが、やはり気になるのは費用です。

 

アクセスに応じて料金が加算されるとはいっても、個人や小規模開発で利用際はまだまだ、仕切りが高いのではないでしょうか。

 

APIのアクセスに対応したバックエンドのログインまわりの開発も自分で行う場合は、DjangoRESTframework(DRF)を利用する機会が多いと思います。

DRFを利用する際は、Django-Rest-Authのモジュールを利用する事で、より簡単にログインまわり等認証機能の実装を行う事が可能となります。

 

◆動作検証環境

・ローカル環境:mac Catalina
・python:3.7.5
・Django:
3.1.2
・django-allauth:0.43.0
・DjangoRESTframework: 3.12.1
・django-rest-auth: 0.9.5

 

この記事では、macローカル環境に、Django、django-allauth、DjangoRESTframeworkの環境構築が済んでいる状況から解説しています。

 

この記事では、DjangoRESTframeworkのシリアライザとビューの基礎知識と使い方について紹介します。

 

Djangoプロジェクトにdjango-allauthを利用してログイン認証機能を実装する

DjangoRESTframeworkのシリアライザ(serializer)と、ビュー(view)の基礎知識と使い方

 

スポンサードリンク

Django-Rest-Authのインストール、初期設定

 

まずは、Django-Rest-Authパッケージのインストールです。

 

次にsettings.pyの編集です。

Django-Rest-Authアプリケーションの設定と同時に、認証に利用するトークンを生成するためアプリケーションや、ユーザー登録に必要となるアプリケーションも設定します。

また、サインアップ(ユーザー登録)はdjango-allauthの利用も必要となるため、#確認 としている箇所が下記のように編集されているか、確認してください。

不足がある場合(django-allauthをインストールしていない等)は、こちらの記事を参考に設定を行ってください。

Djangoプロジェクトにdjango-allauthを利用してログイン認証機能を実装する

 

project/settings.py

 

settings.pyの編集が終わったら、migrate を行います。

 

これでインストールとsettings.pyの編集が完了です。

Django-Rest-Authのルーティング設定

 

Django-Rest-Authのルーティング設定を行います。

project/urls.pyを以下のように編集します。

project/urls.py

 

rest-auth/login/ にアクセスしてみます。

下記のようにログインの画面が表示されればOKです。

est-auth/login/ にアクセスしてみます。

別のpathで登録したrest-auth/registration/も確認します。

下記のように表示されればOKです。

別のpathで登録したrest-auth/registration/も確認します。

このように、Django-Rest-AuthでもDjango-allauthのように、/rest-auth/ 、/rest-auth/registration/  のようにurlを設定すると、Django-Rest-Authのデフォルトで設定されたエンドポイント(url)でログイン、ログアウトなど認証機能が使用できるようになります。

よく利用される認証機能とエンドポイントは以下のとおりです。

認証機能エンドポイント(HTTPメソッド)
ログイン/rest-auth/login/ (POST)
ログアウト/rest-auth/logout/ (POST)
パスワードリセット申請/rest-auth/password/reset/ (POST)
新パスワード入力/rest-auth/password/reset/confirm/ (POST)
パスワード変更/rest-auth/password/change/ (POST)
ユーザー登録/rest-auth/registration/ (POST)

 

Django-Rest-Authのエラー対応

 

django.core.exceptions.ImproperlyConfigured: TemplateResponseMixin requires either a definition of ‘template_name’ or an implementation of ‘get_template_names()’

 

Django-Rest-Authのデフォルトのエンドポイントで認証作業を進めると、エラーが発生する場面があるので、エラー内容と対応方法を紹介します。

 

/rest-auth/registration/  にアクセスし、メールアドレスとパスワードをPOSTメソッドで送信すると、下記にようなメールのメッセージがコンソールに表示されます。
*settings.pyでメール内容をコンソールに表示するように指定しているため。
*settings.p対象のメールに確認用のURLを送信し確認するように指定しているため。
 

http://127.0.0.1:8000/rest-auth/registration/account-confirm-email/Nw:1kVywd:R1AaKokhEpu9Ss8hYffd6y-nikXJBROwluHY7xFVtIM/

確認画面の遷移先へのリンクをクリックすると下記のようなエラーが発生します。

 

‘account_confirm_email’で指定してするTemplateがないと言われます。

この事例は公式ドキュメントのFAQにも対応の方法が記載されているので、それに従いurls.pyを以下のように編集します。

project/urls.py

*公式ドキュメントの方法は、url() で指定いるので、path() の指定方法に変更しています。

 

もう一度/rest-auth/registration/  にアクセスし、情報を入力しPOSTします。

 

さきほどのエラーは解消されるので、確認用URLのhttp://127.0.0.1:8000/account-confirm-email/(%3FPMTA:1kVzGH:LI2BlA_f49ZIItem2v2TqLyJO0WnTye75Qt0nJUUrsE%5B-:%5Cw%5D+)/$ にアクセスしてみます。

 

しかし遷移先が404エラーとなるため、対象のパスをルーティングします。

project/urls.py

 

これでルーティングの設定ができ、登録ユーザーの有効化のページへ進む事ができます。

これでルーティングの設定ができ、登録ユーザーの有効化のページへ進む事ができます。

[確定]を選択して動作を確認してみると、Django-Rest-Authのバージョンによって下記のエラーが出る場合があります。
 

対応するために、project/sttings.pyを編集します。

project/sttings.py

 

settings.pyの編集が終わったら、migrate を行います。

 

これで認証の動作が行えるようになります。

 


以上、Django-Rest-Authのインストール、初期設定とログインまわり認証準備の方法について解説しました。

 

参考ソース:https://django-rest-auth.readthedocs.io/en/latest/