ホームページ >PHPフレームワーク >Laravel >Laravel による API 認証と認可: 機密データと操作の保護

Laravel による API 認証と認可: 機密データと操作の保護

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2023-08-26 14:33:361912ブラウズ

Laravel による API 認証と認可: 機密データと操作の保護

API 認証と認可に Laravel を使用する: 機密データと操作の保護

概要:
API (アプリケーション プログラミング インターフェイス) は、最新の Web アプリケーションの重要な部分です。開発コンポーネント。さまざまなシステム間でのデータ対話や関数呼び出しが可能になります。 API アプリケーションでは、データのセキュリティが非常に重要です。 Laravel は、強力な API 認証および認可機能を提供する人気の PHP フレームワークであり、機密データと操作を保護し、不正アクセスを防止するのに役立ちます。

1. Laravel のインストールと設定
まず、composer を使用して Laravel をインストールする必要があります。コマンドラインで次のコマンドを実行します:

composer global require laravel/installer

インストールが完了したら、次のコマンドを使用して新しい Laravel プロジェクトを作成できます:

laravel new api-auth

プロジェクトが存在するディレクトリを入力します:

cd api-auth

次に、ユーザー データを暗号化するためのキーを生成する必要があります。次のコマンドを実行します。

php artisan key:generate

2. API 認証および認可関連ファイルを作成します。

  1. ユーザー モデルを作成します。 Laravel では、データベース内のデータを管理するために Eloquent モデルをよく使用します。次のコマンドを実行して、ユーザー モデルを生成します。
php artisan make:model User -m

このコマンドは、ユーザー モデルと対応するデータベース移行ファイルを生成します。

  1. ユーザー認証コントローラーの作成: 次のコマンドを実行してユーザー認証コントローラーを生成します:
php artisan make:controller AuthController
  1. API ルートの作成: routes/ を編集します。 API 関連のルートを定義する api.php ファイル:
Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');
Route::middleware('auth:api')->group(function () {
    Route::get('user', 'AuthController@user');
    Route::post('logout', 'AuthController@logout');
});

上記のルートは、ユーザーのログイン、登録、ユーザー情報の取得、ログアウトなどのインターフェイスを定義します。

  1. ユーザー認証コントローラーの作成: app/Http/Controllers/AuthController.php ファイルを開き、次のコードを書き込みます。上記のコードでは、ユーザー登録、ログイン、ユーザー情報の取得、ログアウトの操作を定義しています。
3. API 認証と認可の構成

Guard と Provider の構成:

config/auth.php
    ファイルを開き、
  1. guards を見つけます。および providers 構成項目。次の例に従って構成します。 <pre class='brush:php;toolbar:false;'>namespace AppHttpControllers; use IlluminateHttpRequest; use AppUser; use IlluminateSupportFacadesAuth; class AuthController extends Controller { public function register(Request $request) { $validatedData = $request-&gt;validate([ 'name' =&gt; 'required|max:55', 'email' =&gt; 'email|required|unique:users', 'password' =&gt; 'required|confirmed' ]); $validatedData['password'] = bcrypt($request-&gt;password); $user = User::create($validatedData); $accessToken = $user-&gt;createToken('authToken')-&gt;accessToken; return response(['user' =&gt; $user, 'access_token' =&gt; $accessToken]); } public function login(Request $request) { $loginData = $request-&gt;validate([ 'email' =&gt; 'email|required', 'password' =&gt; 'required' ]); if (!Auth::attempt($loginData)) { return response(['message' =&gt; 'Invalid credentials']); } $accessToken = Auth::user()-&gt;createToken('authToken')-&gt;accessToken; return response(['user' =&gt; Auth::user(), 'access_token' =&gt; $accessToken]); } public function user() { return response(['user' =&gt; Auth::user()]); } public function logout(Request $request) { $request-&gt;user()-&gt;token()-&gt;revoke(); return response(['message' =&gt; 'Successfully logged out']); } }</pre>
  2. データベース移行の実行: 次のコマンドを実行して、生成されたデータベース移行を実行します。
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users'
        ],
    
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ]
    ],
    
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => AppUser::class
        ]
    ],
  1. パスポートの構成: 次のコマンドを実行してパスポート構成ファイルを公開します:
    php artisan migrate
  1. 実行後、暗号化された公開キーと秘密キーのペアが発行用に生成され、アクセスの検証トークン。

パーソナル アクセス クライアントの作成: 次のコマンドを実行してパーソナル アクセス クライアントを作成します:

    php artisan passport:install
  1. 5. API の認証と認可をテストします

新しいユーザーを登録します:

http://localhost:8000/api/register
    への POST リクエストを使用して、次のデータを送信します:
  1. <pre class='brush:php;toolbar:false;'>php artisan passport:client --personal</pre>
  2. ログインユーザー: POST リクエストを使用して
http://localhost:8000/api/login
    次のデータを送信します:
  1. <pre class='brush:php;toolbar:false;'>{ &quot;name&quot;: &quot;John Doe&quot;, &quot;email&quot;: &quot;johndoe@example.com&quot;, &quot;password&quot;: &quot;password&quot;, &quot;password_confirmation&quot;: &quot;password&quot; }</pre>
  2. ユーザー情報の取得: GET リクエストを使用します
http://localhost:8000/api/user
    にリクエストを送信し、ヘッダーに
  1. Authorization: Bearer {access_token} を追加します。ここで、{access_token} はログイン時に返されるアクセストークン。 ユーザーをログアウトします: POST リクエストを使用してリクエストを http://localhost:8000/api/logout
  2. に送信し、
  3. Authorization: Bearer {access_token}## も追加します。ヘッダー内の # 。 上記で、Laravel の API 認証および認可機能を通じて機密データと操作を保護することに成功しました。ユーザーモデル、コントローラー、ルーティング、Passportが提供する機能を利用することで、APIの認証・認可制御を簡単に実現できます。

以上がLaravel による API 認証と認可: 機密データと操作の保護の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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