API の継続的な開発に伴い、JSON Web トークン (JWT) を使用してユーザーの認証と認可を実装する必要がある Web アプリケーションがますます増えています。 API を開発するための推奨フレームワークとして、Laravel は JWT もサポートしています。この記事ではLaravelでJWTを使う方法を紹介します。
JWT とは何ですか?
JSON Web Token (JWT) は、当事者間でクレームを JSON オブジェクトとして安全に送信するためのオープン スタンダード (RFC 7519) です。 JWT は、認可、認証、情報交換に使用できます。 JWT は通常、HTTP リクエストの Authorization ヘッダー内のベアラー トークンとして送信されます。
JWT の構造は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。ヘッダーとペイロードは両方とも JSON オブジェクトであり、署名はこれら 2 つの部分を組み合わせた暗号化された結果です。 JWT の構造は非常に単純であるため、簡単に解析して検証することができます。
Laravel で JWT を使用するにはどうすればよいですか?
JWT を使用するには、Laravel プロジェクトに依存ライブラリ tymondesigns/jwt-auth をインストールする必要があります。 Laravel 5.7 以降では、次のコマンドを使用して依存ライブラリをインストールできます:
composer require tymon/jwt-auth
インストールが完了したら、次のサービス プロバイダーとエイリアスを config/app.php ファイルに追加する必要があります。
'providers' => [ // Other Service Providers TymonJWTAuthProvidersLaravelServiceProvider::class, ], 'aliases' => [ // Other Aliases 'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class, 'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class, ],
次に、JWT キーを生成する必要があります。キーは次のコマンドを使用して生成できます:
php artisan jwt:secret
このコマンドはランダムなキーを生成し、それを config/jwt.php ファイルに追加します。このキーを保護し、誰にも公開しないことが重要です。
キーを生成した後、Laravel で JWT の使用を開始できます。 JWT は認証と認可に使用できます。
JWT を使用した認証
Laravel で JWT を使用して認証するプロセスは次のとおりです:
JWT を生成してユーザーに返すコードは次のとおりです:
public function login(Request $request) { $credentials = $request->only('email', 'password'); if (!$token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return response()->json(['token' => $token]); }
JWT を検証してユーザー情報を抽出するコードは次のとおりです:
public function profile(Request $request) { $user = JWTAuth::parseToken()->authenticate(); return response()->json(['user' => $user]); }
認可に JWT を使用する
Laravel で認可に JWT を使用するプロセスは次のとおりです:
JWT を検証し、ユーザーのロールまたは権限を確認するコードは次のとおりです:
public function index(Request $request) { $user = JWTAuth::parseToken()->authenticate(); if ($user->hasRole('admin')) { $items = Item::all(); } else { $items = Item::where('user_id', '=', $user->id)->get(); } return response()->json(['items' => $items]); }
ここでの hasRole() メソッドはカスタム メソッドであり、必要があることに注意してください。ユーザーモデルに参加することは達成されます。
概要
この記事では、Laravel での認証と認可に JWT を使用するプロセスを紹介します。 JWT は、アプリケーションをさまざまな攻撃から保護する、安全でシンプル、スケーラブルなユーザー認証メカニズムを提供します。 API を必要とする Web アプリケーションを開発している場合は、JWT を使用することをお勧めします。
以上がlaravelでjwtを使う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。