トークン認証の全体像:
通常、認証サービスでは、トークンに関連付けられた有効期間があります。特定の時間が経過すると、トークンは期限切れになります。ここでは、サーバーによって送信された有効期限を持つアクセス トークンを取得します。サーバーがユーザーを特定できるように、クライアントはリクエストヘッダーで毎回このトークンを送信する必要があります。いつ期限切れになるかを追跡するか、INVALID_TOKENエラーが発生するまで使い続けることができます。その場合、サーバーからトークンを再度取得する必要があります。
access_token の有効期間は、クライアントへのアクセスを許可するユーザーのログイン セッションとは無関係です。OAuth2には、ユーザーのログインやログアウト、またはセッションの概念がありません。トークンは、ユーザーが本人であるかどうかを識別するためにのみ使用されます。
トークンは、ユーザーとクライアントに対して一意です。Cookie に保存して、Remember Me などを有効にすることができますが、サーバー上では削除する必要はありません。トークンの有効期限が切れるたびに、クライアントはサーバーにリクエストを送信してトークンを再度取得する必要があります。
DRF トークン認証でのトークンの有効期限:
現在、DRF トークン認証はこの機能をサポートしていません。自分で実装するか、この機能を提供するサードパーティのパッケージを使用する必要があります。トークンの有効期限をチェックし、トークンの有効期限が切れている場合は例外を発生させる必要があります。
自分で実装するには、DRF トークン認証クラスからサブクラス化し、ロジックを追加します。
サードパーティのパッケージdjango-rest-framework-expiring-tokens を使用することもできます。
参考文献:
1. RESTful API のトークン認証: トークンは定期的に変更する必要がありますか?
2. Google でログインするために OAuth2 を使用したアプリケーションからログアウトする方法は?