Flask Academy · レッスン

ログイン時にアクセストークンを発行する

JWTに署名し、クライアントに返します

レッスン 2/413 ステップ

「ログイン時にアクセストークンを発行する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

ログインのハンドシェイク

ログインでは、クライアントが有効な認証情報を送信し、サーバーが後続の呼び出しで使える署名付きのアクセストークンを返します。

拡張機能をインストールする

Flask-JWT-Extendedライブラリが、署名と検証を代わりに処理します。pipで1回インストールすれば、トークンを発行できる状態になります。

pip install flask-jwt-extended

署名キーを設定する

トークンには秘密情報で署名します。JWT_SECRET_KEYを設定し、有効なトークンを作成できるのは自分のサーバーだけにします。ソースコードには含めないでください。

app.config["JWT_SECRET_KEY"] = "change-me"

JWTManagerを作成する

アプリをJWTManagerでラップします。このオブジェクトがFlask-JWT-Extendedをリクエスト処理に接続し、ヘルパーを使えるようにします。

from flask_jwt_extended import JWTManager
jwt = JWTManager(app)

ログイン用のルート

/loginにPOSTルートを追加します。このルートでは、リクエスト本文から送信されたユーザー名とパスワードを読み取ります。

@app.post("/login")
def login():
    ...

まず認証情報を検証する

この確認を決して省略しないでください。何かを発行する前に、パスワードが保存済みのハッシュと一致することを確認します。有効なログインでなければ、トークンもありません。

トークンを発行する

通常はユーザーIDなどのidentityを指定してcreate_access_tokenを呼び出します。そのIDがトークンのsubjectクレームになります。

from flask_jwt_extended import create_access_token
token = create_access_token(identity=user.id)

JSONとして返す

トークンをJSON本文で返します。クライアントはそれを保存し、保護された呼び出しで再送します。🔑

return {"access_token": token}, 200

identityがクレームを決める

渡したidentityは、後続のリクエストで読み取られる値です。数値のユーザーIDのように、小さく安定した値にしてください。

追加のクレームを設定する

トークンにロールやプランを含める必要がありますか。additional_claimsを渡すとデータも一緒に送られ、データベースにアクセスしなくても利用できます。

create_access_token(identity=uid, additional_claims={"role": "admin"})

ログイン失敗を適切に処理する

認証情報が間違っている場合は、トークンを返さず401 Unauthorizedを返します。明確で一貫したエラーにより、APIの動作を予測しやすくなります。

return {"msg": "Bad credentials"}, 401

確認してみましょう

実際にトークンを生成する呼び出しを思い出してください。

まとめ

認証情報を検証し、ユーザーIDを指定してcreate_access_tokenを呼び出し、JSONとして返します。まずJWT_SECRET_KEYとJWTManagerを設定してください。✅

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ログイン時にアクセストークンを発行する」レッスンは無料ですか?

はい。「ログイン時にアクセストークンを発行する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「ログイン時にアクセストークンを発行する」で何を学びますか?

JWTに署名し、クライアントに返します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ログイン時にアクセストークンを発行する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. セッションとステートレスなトークン
  2. ログイン時にアクセストークンを発行する
  3. jwt_requiredでエンドポイントを保護する
  4. リフレッシュトークンと有効期限
← Flask Academyに戻る