django-cognito-jwtのリポジトリを読みながら学んだことを書いていきます。
READMEがreStructuredTextで書かれている
READMEが拡張子がmdではなくrstになっていて、調べたところSphinxというツールで書く方法とのこと。
planset-study-sphinx.readthedocs.io
toxでパッケージ管理している
リポジトリにPipfileなどが無かったので他のパッケージ管理用のツールが使われているか見たところtoxというツールが使われているようでした。
以下の3ファイルで構成されているようです。 ①「tox.ini」 ②「pyproject.toml」 ③「setup.cfg」
基本的な構成
実装を呼んだところ、src/django_cognito_jwt/backend.pyでJSONWebTokenAuthenticationがBaseAuthenticationクラスを継承しており、このクラスを自分のDjango REST Framework(DRF)のDEFAULT_AUTHENTICATION_CLASSESに追加することでDRFの認証をカスタマイズできるそうです。
JSONWebTokenAuthenticationクラスの実装は以下
DRF自体の実装も確認したところBaseAuthenticationの実装は以下にありました。
BaseAuthenticationクラスにはauthenticateメソッドがraise NotImplementedError
で実装されているので継承する側がauthenticateメソッドをoverrideする必要があるようです。
django-cognito-jwtでは以下でauthenticateメソッドが実装(override)されています。