laravelでjwtを使う方法

王林
リリース: 2023-05-21 10:40:07
オリジナル
1961 人が閲覧しました

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 を使用して認証するプロセスは次のとおりです:

  1. ユーザーは資格情報 (ユーザー名とパスワードなど) を送信します。
  2. アプリケーションはこれらの資格情報を使用して JWT を生成し、ユーザーに返します。
  3. ユーザーは、この JWT を後続のリクエストのベアラー トークンとして Authorization ヘッダーに含めます。
  4. アプリケーションは 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 を使用するプロセスは次のとおりです:

  1. アプリケーションは、保護されたリソースにアクセスする前にユーザーの ID を検証します。
  2. ユーザーが認証されている場合、アプリケーションは JWT に適切なロールまたは権限が含まれていることを確認します。
  3. ユーザーが適切なロールまたは権限を持っている場合、アプリケーションは要求されたリソースへのアクセスをユーザーに許可します。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート