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

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

WBOY
WBOYオリジナル
2023-06-15 10:28:561289ブラウズ

Laravel は非常に人気のある PHP フレームワークであり、使いやすく、拡張性が高く、コードの可読性が高いです。 Laravelでは、OAuth2認証を実装するためのAPIパッケージであるLaravel Passportをはじめ、さまざまな機能を実装するためのアドオンパッケージ(Package)も多数提供されています。

OAuth2 は、認証プロセスを簡素化する一般的な認証フレームワークであり、Web アプリケーションやモバイル アプリケーションで広く使用されています。 OAuth2 を使用するには、トークンを生成し、クライアントが API を使用できるようにする認可サーバーを実装する必要があります。 Laravel Passport は、OAuth2 認証を実装する簡単な方法を提供します。

この記事では、Laravel Passportを使用してOAuth2認証を実装する方法を紹介します。開始する前に、Laravel フレームワークがすでにインストールされていることを前提としています。

Laravel Passport のインストール

Composer を使用して Laravel Passport をインストールできます。 Laravel アプリケーションのルート ディレクトリで次のコマンドを実行します:

composer require laravel/passport

インストールが完了したら、次のコマンドを実行して Laravel Passport に必要なテーブルを作成する必要があります:

php artisan migrate

次次のコマンドを実行して、Laravel Passport が暗号化キーを生成するために必要なテーブルを作成します。

php artisan passport:install

生成されたキーは、生成されたトークンの暗号化に使用されます。

パスポートの設定

インストールが完了したら、アプリケーションで Laravel Passport を構成する必要があります。必要な手順は次のとおりです:

パスポートを有効にする

Laravel Passport を有効にするには、まず Passport::routes() メソッドを呼び出す必要があります。このメソッドは、必要なルートを登録します。

//在bootstrap/app.php文件中加入下面这行代码
LaravelPassportPassport::routes();

自動トークン更新を有効にする

デフォルトでは、トークンは期限切れになると自動的に期限切れになります。トークンの有効期限が切れた後にトークンを自動的に更新したい場合は、AuthServiceProvider の Passport::refreshTokensExpireIn() メソッドを使用できます。次のコード スニペットを AuthServiceProvider に追加します。

//在AppProvidersAuthServiceProvider.php文件中加入下面这段代码
use LaravelPassportPassport;

//其他代码...

public function boot()
{
    $this->registerPolicies();

    Passport::routes();

    Passport::tokensExpireIn(Carbon::now()->addDays(15));

    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

この例では、tokensExpireIn() メソッドはトークンの有効期限を 15 日に設定し、refreshTokensExpireIn()メソッドは、自動的に更新されるトークンの有効期限を 30 日に設定します。

User モデルでの Passport の使用

次に、User モデルで Laravel Passport 機能を有効にする必要があります。これは、User クラスの Passport::use() メソッドを使用することで実現できます。

//在app/User.php文件中加入下面这段代码
use LaravelPassportHasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

OAuth2 クライアントの作成

アプリケーションで OAuth2 認証を使用する場合は、次のように生成する必要があります。認可サーバー API トークン。認可サーバーと通信するには、クライアントを作成する必要があります。 passport:client コマンドを実行してクライアントを作成できます:

php artisan passport:client --password

このコマンドを実行すると、アプリケーション名の入力を求めるプロンプトが表示されます。名前を入力しない場合は、では、デフォルト値を使用して Just take a car を返すことを選択できます。

操作が完了すると、client_id と client_secret が生成されます。 client_id と client_secret は、認可サーバーとの通信に使用されます。

API ルートの作成

OAuth2 クライアントを作成した後、認可サーバーが API にアクセスできるように API ルートを作成する必要があります。

//在routes/api.php文件中加入以下代码
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

この例では、auth:api ミドルウェアを使用して指定されたルートに OAuth2 認証が必要です。有効な API トークンが指定されていない場合、このルートは 401 Unauthorized HTTP 応答を返します。

認証のために HTTP リクエストを送信する

これで、API にリクエストを送信し、OAuth2 資格情報を使用して認証する準備が整いました。

Postman などのツールを使用して API をテストできますが、リクエストには有効な API トークンが含まれている必要があります。 Postman では、リクエストに Authorization ヘッダーを含めることができます。たとえば、

Authorization: Bearer [access_token]

access_token は、以前に生成されたトークンに置き換える必要があります。

概要

Laravel Passport は、多くのコードを記述することなく API 認証を簡単に実装できる、使いやすい OAuth2 サーバーです。この記事では、Laravel Passport を使用して OAuth2 認証を実装する手順を説明し、OAuth2 クライアントと API ルートを作成して HTTP リクエスト経由で認証する方法を示しました。アプリケーションで API 認証を使用する必要がある場合、Laravel Passport は理想的な選択肢の 1 つとなる可能性があります。

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

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