django-cognito-jwtのコードリーディング1

github.com

django-cognito-jwtのリポジトリを読みながら学んだことを書いていきます。

READMEがreStructuredTextで書かれている

READMEが拡張子がmdではなくrstになっていて、調べたところSphinxというツールで書く方法とのこと。

planset-study-sphinx.readthedocs.io

toxでパッケージ管理している

リポジトリにPipfileなどが無かったので他のパッケージ管理用のツールが使われているか見たところtoxというツールが使われているようでした。

tox.wiki

majisemi.com

以下の3ファイルで構成されているようです。 ①「tox.ini」 ②「pyproject.toml」 ③「setup.cfg」

基本的な構成

実装を呼んだところ、src/django_cognito_jwt/backend.pyでJSONWebTokenAuthenticationがBaseAuthenticationクラスを継承しており、このクラスを自分のDjango REST Framework(DRF)のDEFAULT_AUTHENTICATION_CLASSESに追加することでDRFの認証をカスタマイズできるそうです。

JSONWebTokenAuthenticationクラスの実装は以下

github.com

JSONWebTokenAuthenticationをDEFAULT_AUTHENTICATION_CLASSESに追加する例

DRF自体の実装も確認したところBaseAuthenticationの実装は以下にありました。

github.com

DRFリポジトリのBaseAuthenticationの実装

BaseAuthenticationクラスにはauthenticateメソッドがraise NotImplementedErrorで実装されているので継承する側がauthenticateメソッドをoverrideする必要があるようです。

django-cognito-jwtでは以下でauthenticateメソッドが実装(override)されています。

github.com