ホームページ >PHPフレームワーク >Laravel >Laravel 開発: Laravel Sanctum を使用して API 認証と認可を実装するにはどうすればよいですか?

Laravel 開発: Laravel Sanctum を使用して API 認証と認可を実装するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-06-13 19:07:182681ブラウズ

Laravel は、Web アプリケーションの開発と保守を簡素化するための多くの強力な機能とツールを提供する人気のある PHP Web 開発フレームワークです。 Laravel Sanctum は、API エンドポイントを不正アクセスから簡単に保護する API 認証および認可機能を提供する Laravel フレームワークのプラグインです。

この記事では、Laravel Sanctum を使用して API の認証と認可を実装する方法を学びます。

1.Laravel Sanctum とは何ですか?

Laravel Sanctum は、シンプルだが強力な API 認証および認可機能を提供する軽量の認証パッケージです。これは Laravel ミドルウェアと HTTP 認証に基づいており、認証トークンを API リクエストに安全に添付できます。

Laravel Sanctum は、Cookie ベースの認証とトークンベースの認証の 2 つの認証方法をサポートしています。 Cookie ベースの認証では、Laravel ミドルウェアを使用して、有効な認証 Cookie がリクエスト内に存在するかどうかを確認します。 Header クラスのトークンを検証し、それが有効かどうかを確認する別の方法。

2. Laravel Sanctum のインストール

始める前に、まず Laravel Sanctum をインストールする必要があります。 Laravel Sanctum は、composer パッケージ マネージャーを使用して簡単にインストールできます:

composer require laravel/sanctum

もちろん、composer.json ファイルに次の要件を追加することで手動でインストールすることもできます:

{
  "require": {
    "laravel/sanctum": "^2.9"
  }
}

完了したら、次のコマンドを実行して、Laravel Sanctum 設定ファイルとデータベース移行ファイルを公開します:

php artisan vendor:publish --tag=sanctum-config
php artisan vendor:publish --tag=sanctum-migrations
php artisan migrate

3. Laravel Sanctum を設定します

  1. まず、laravel/sanctum ミドルウェアをアプリケーションの HTTP に追加する必要があります。コアミドル。

app/Http/kernel.php ファイルを変更し、Sanctum ミドルウェアを追加します。

// app/Http/Kernel.php

protected $middleware = [
    // ...
    LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
];

protected $middlewareGroups = [
    'web' => [
        // ...
    ],

    'api' => [
        LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];

これにより、Sanctum の Cookie ベースの認証がすべてのリクエストで使用できるようになります。

  1. 次に、認証構成ファイルを構成する必要があります。

config/auth.php ファイルを開き、デフォルトとガードを見つけて、sanctum を使用するように設定します。

// config/auth.php

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],
],

これにより、トークンベースの認証に Sanctum を使用できるようになります。

  1. Sanctum プロバイダーを追加します。

新しいバージョンの Laravel を使用している場合は、プロバイダーを追加する必要はありません。古いバージョンを使用している場合は、config/app.php ファイルを開いて、プロバイダー配列に次の行を追加してください:

LaravelSanctumSanctumServiceProvider::class,

IV. 認可トークンの作成

これで、設定が完了しました。 Laravel Sanctum、次に Sanctum を使用して認証トークンを作成する方法を学びます。

  1. ユーザーがログインした後、users テーブルにユーザーの API トークンを作成します。
public function createToken(Request $request)
{
    $user = Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')]);

    if($user) {
        $token = $user->createToken('API Token')->plainTextToken;
        
        return response()->json([
          'token' => $token,
        ]);
    } else {
        return response()->json([
          'message' => 'Invalid credentials',
        ], 401);
    }
}
  1. トークンを作成した後、それを各リクエストの Authorization ヘッダーに追加できます。 axios リクエストで次のように設定できます:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

5. API 認証と認可の実装

認可トークンを作成した後、Sanctum を使用して API エンドポイントを保護できます。不正アクセス。 Laravel ルーティング ミドルウェアを使用して認証トークンをチェックし、不正アクセスを拒否できます。

  1. まず、api.php ファイルで保護された API ルートを定義します。
// routes/api.php

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

このルートは Sanctum 認証ミドルウェアを使用して保護されます。

  1. 次に、保護されたルートにアクセスして結果を表示します。これは、次のコマンドでテストできます。
php artisan serve

これで、/api/user ルートにアクセスして、ログインしているユーザーの詳細を表示できるようになります。現在、Authorization ヘッダーがないとアクセスできず、401 Unauthorized HTTP ステータス コードが返されます。

6. 終了

Laravel Sanctum は、Laravel Web アプリケーションや Web API に認証と認可を簡単に実装できる、強力で使いやすい認証および認可ソリューションです。 API エンドポイントを不正アクセスから簡単に保護し、どのユーザーがどの API エンドポイントにアクセスできるかを簡単に制御できます。この記事では、Laravel Sanctum をインストールして構成する方法を学び、それを使用して認可トークンを作成し、API 認証と認可を実装する方法を説明しました。

以上がLaravel 開発: Laravel Sanctum を使用して API 認証と認可を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。