Laravel は非常に人気のある PHP フレームワークであり、使いやすく、拡張性が高く、コードの可読性が高いです。 Laravelでは、OAuth2認証を実装するためのAPIパッケージであるLaravel Passportをはじめ、さまざまな機能を実装するためのアドオンパッケージ(Package)も多数提供されています。
OAuth2 は、認証プロセスを簡素化する一般的な認証フレームワークであり、Web アプリケーションやモバイル アプリケーションで広く使用されています。 OAuth2 を使用するには、トークンを生成し、クライアントが API を使用できるようにする認可サーバーを実装する必要があります。 Laravel Passport は、OAuth2 認証を実装する簡単な方法を提供します。
この記事では、Laravel Passportを使用してOAuth2認証を実装する方法を紹介します。開始する前に、Laravel フレームワークがすでにインストールされていることを前提としています。
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 モデルで Laravel Passport 機能を有効にする必要があります。これは、User クラスの Passport::use() メソッドを使用することで実現できます。
//在app/User.php文件中加入下面这段代码 use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; }
アプリケーションで OAuth2 認証を使用する場合は、次のように生成する必要があります。認可サーバー API トークン。認可サーバーと通信するには、クライアントを作成する必要があります。 passport:client
コマンドを実行してクライアントを作成できます:
php artisan passport:client --password
このコマンドを実行すると、アプリケーション名の入力を求めるプロンプトが表示されます。名前を入力しない場合は、では、デフォルト値を使用して Just take a car を返すことを選択できます。
操作が完了すると、client_id と client_secret が生成されます。 client_id と client_secret は、認可サーバーとの通信に使用されます。
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 応答を返します。
これで、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 サイトの他の関連記事を参照してください。