この記事の続きです。
programming-gogogogo.hatenablog.com
こちらの動画を見ながらPythonのDjango REST framework(DRF)について勉強しています。
前回はベーシック認証を使って認証を行いました。
今回はトークンを使っての認証を実装します。
公式ドキュメントではこちらに説明があります。
まずトークンを保持するDBテーブルを用意します。
MyProject/settings.pyに以下の記述を追加します。
'rest_framework.authtoken'
次に以下のmigrateコマンドを実行します。
python manage.py migrate
するとマイグレーションが行われトークンを保持するテーブルがDBに追加されます。
管理画面から確認するとtokensテーブルが新しく作成されています。
そのまま管理画面でtokensテーブルにユーザーを指定してデータを保存するとトークンが発行されてました。
トークンをユーザーに紐づけて保存できたのでPostmanからリクエストを送って動作確認します。
ベーシック認証で仕様したAuthorizationのTYPEはInherit auth from parentに変更しておきます。
まずヘッダーにトークンを設定しないでリクエストを送ると"Authentication credentials were not provided."エラーになりました。
次にヘッダーのKEYをAuthorizationにして、VALUEをDBに保存されているトークンにするとデータが正常に取得できました。(VALUEはTokenと書く必要があるみたいなので注意)
DRFでは少ない工数でトークン認証が実装できて便利そうだと感じました。
もう少し使ってみてより細かいメリットデメリットを調べていきたいと思います。