現在の位置: ホーム> 最新記事一覧> ThinkPhp6にJWT認証を実装するための完全なガイド

ThinkPhp6にJWT認証を実装するための完全なガイド

gitbox 2025-07-14

JWTとは何ですか?

JWT(JSON Web Token)は、ネットワークアプリケーション間で安全な情報を渡すために使用される暗号化トークンです。 JSONオブジェクトの形で、クライアントとサーバーの間に情報を安全に送信します。

JWTの仕組み

JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。

ヘッダー:トークンのタイプと暗号化アルゴリズムを宣言します。例:

 {
  "alg": "HS256",
  "typ": "JWT"
}

ペイロード:いくつかの標準宣言とカスタム宣言が含まれています。例:

 {
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

署名:ヘッダーのbase64エンコードに署名し、キーを使用してペイロードを生成します。

ThinkPhp6でJWT検証を使用する手順

JWT拡張機能をインストールします

ThinkPhp6でJWT検証を使用するには、最初にJWT拡張機能をインストールする必要があります。 Project DirectoryのComposer.jsonファイルで、次の依存関係を追加します。

 "require": {
  "firebase/php-jwt": "5.0.0"
}

次に、 Composer Installコマンドを実行してJWT拡張機能をインストールします。

トークンを生成します

正常にログインした後、トークンを生成してクライアントに返すことができます。サンプルコード:

 use think\jwt\JWT;

public function login() {
  // ログインロジック
  $payload = [
    'sub' => $user->id,
    'name' => $user->username,
    'iat' => time()
  ];
  $token = JWT::encode($payload, $key);
  return json(['token' => $token]);
}

トークンを確認します

ユーザーのIDを確認する必要がある場合は、JWTを使用してトークンの有効性を確認できます。サンプルコード:

 use think\jwt\JWT;

public function getUser(Request $request) {
  $token = $request->header('Authorization');
  try {
    $payload = JWT::decode($token, $key, ['HS256']);
    $user = User::get($payload->sub);  // データベースからユーザー情報を取得します
    return json($user);
  } catch (Exception $e) {
    return json(['error' => 'Token is invalid']);
  }
}

要約します

JWTは便利で安全な認証方法であり、ThinkPhp6にJWT認証を実装することも非常に簡単です。トークンを生成および検証するプロセスを通じて、ユーザーのIDは効果的に保護されます。同時に、秘密の鍵を保護し、トークンの有効期限を合理的に設定すると、システムのセキュリティがさらに強化される可能性があります。