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

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

PHPz
PHPzオリジナル
2023-06-14 08:21:472110ブラウズ

RESTful API の人気とアプリケーションの普及に伴い、API の認証と認可を必要とするアプリケーションがますます増えているため、API セキュリティは今日のソフトウェア開発において非常に重要な側面となっています。 Laravel Sanctum は、Laravel 7.0 ですぐに導入された軽量の認証システムで、API 認証をシンプルかつ安全にするように設計されています。この記事では、LaravelでSanctumを使用してAPIのセキュリティを確保する方法を紹介します。

  1. Laravel Sanctum のインストール

始める前に、Laravel 7.0 バージョンがインストールされていることを確認する必要があります。次に、composer を使用して Laravel Sanctum の依存関係をインストールします。

composer require laravel/sanctum

Sanctum をインストールした後、次のコードを config/app.php ファイルに追加します。ちなみに、Laravel アプリケーションはすでに Sanctum が提供するサービスと機能を使用しています。

データベースの構成
  1. 次に、データベースの移行を実行する前に、Sanctum のデータベース テーブルを設定する必要があります。 Larav lSanctum は、デフォルトで次のフィールドを含む
personal_access_tokens

データベース テーブルを提供します:

    id
  • : トークンの一意の識別子
  • tokenable_type
  • : トークンに関連付けられたモデルのクラス名
  • tokenable_id
  • : トークンに関連付けられたモデルの ID
  • name
  • : トークンの名前
  • token
  • : API トークンの値
  • abilities
  • : トークンの承認
personal_access_tokens

テーブルを作成する前に、最初にモデル リレーションシップを作成する必要があります。これは、AuthServiceProvider に以下を登録することで実行できます: <pre class='brush:php;toolbar:false;'>'providers' =&gt; [ // ... LaravelSanctumSanctumServiceProvider::class, ], 'aliases' =&gt; [ //... 'Sanctum' =&gt; LaravelSanctumSanctum::class, ]</pre>

Sanctum::ignoreMigrations()

は、Laravel が artisan merge# を実行しないようにするために使用されます。 ## コマンド Sanctum のデータベース移行ファイルを実行します。ただし、ほとんどの場合、データベース移行ファイルのコマンドに追加するだけです。 Sanctum::actingAs() ユーザー認証なしでユーザーを偽装する開発専用のメソッドも提供します。 次に、次のコマンドを実行して personal_access_tokens

テーブルを作成する必要があります:

use LaravelSanctumSanctum;
//...

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

    Sanctum::ignoreMigrations();

    Sanctum::actingAs( null, [
        'superuser'
    ]);
}
Create API Token

  1. Laravel Sanctum API のトークンを生成する 2 つの方法が提供されています。 1 つは
  2. CreateToken
メソッドで、オプションの名前と付与されたアクセス許可を持つ 1 つ以上の API トークンを作成できます。ここでは 2 番目の方法を紹介します。これは、

hasApiTokens() 関数と createToken() 関数を使用する方法です。

php artisan migrate
ここでは、ユーザー モデル HasApiTokens ユーザー モデルに API トークン機能を実装するためのトレイト。

createToken

メソッドを使用して API トークンを作成し、トークンの作成時にオプションの名前と承認されたアクセス許可キーを指定します。 API ルートの保護

    API キーを入手すると、それをすべての認証リクエストに挿入できます。リクエスト内のトークンを検証するために、Laravel のルーティング ファイルで
  1. sanctum
  2. ミドルウェアを使用して API ルートを保護できます:
// use the HasApiTokens trait within your User Model
use LaravelSanctumHasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ...
}

// create a Token with User ID and given Abilities
$personalAccessToken = $user->createToken('API Token', ['server:get','server:post']);

このコードでは、sanctum を含む検証を定義します。 ミドルウェア ルーティング グループ。ルート グループには、アクセスするために有効なトークンのみが必要なルートが含まれています。

ベアラー トークンの使用

  1. ベアラー
  2. トークンの使用は、HTTP
Authorization

ヘッダー経由で API トークンを送信する最良の方法です。一般的な方法。リクエスト ヘッダーに Authorization: Bearer {{$personalAccessToken->plainTextToken}} を追加することでトークンを承認できます: <pre class='brush:php;toolbar:false;'>// A Group of API routes that require a valid Token Route::group(['middleware' =&gt; 'auth:sanctum'], function () { Route::get('/user', function (Request $request) { return $request-&gt;user(); }); });</pre>Revoke API token

#最後に、API トークンを取り消す方法を理解する必要があります。
    tokens()->delete()
  1. 関数を使用してユーザーのすべての API トークンを削除するか、
  2. revoke()
関数を使用して単一の API トークンを取り消すことができます。

curl -H "Authorization: Bearer xxxxx" http://example.com/api/user
結論これで、API を保護するための Sanctum 認証の実装に成功しました。 Sanctum と Laravel は、シンプルでありながら強力な API 認証を提供するため、開発者は強力な API の構築に集中し、ビジネス ロジックに重点を置くことができます。 Sanctum を使用する場合は、API の認証プロセスを完全に理解し、アプリケーションに最高のセキュリティを確保できるように、公式ドキュメントを注意深く読むことを強くお勧めします。

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

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