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

WBOY
リリース: 2023-08-26 14:33:36
オリジナル
1844 人が閲覧しました

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 構成項目。次の例に従って構成します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>
  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. <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>php artisan passport:client --personal</pre><div class="contentsignin">ログイン後にコピー</div></div>
  2. ログインユーザー: POST リクエストを使用して
http://localhost:8000/api/login
    次のデータを送信します:
  1. <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>ユーザー情報の取得: GET リクエストを使用しますhttp://localhost:8000/api/user<ol start="3"> にリクエストを送信し、ヘッダーに <li>Authorization: Bearer {access_token}<code> を追加します。ここで、{access_token} はログイン時に返されるアクセストークン。 ユーザーをログアウトします: POST リクエストを使用してリクエストを http://localhost:8000/api/logout
  2. に送信し、
  3. Authorization: Bearer {access_token}## も追加します。ヘッダー内の # 。 上記で、Laravel の API 認証および認可機能を通じて機密データと操作を保護することに成功しました。ユーザーモデル、コントローラー、ルーティング、Passportが提供する機能を利用することで、APIの認証・認可制御を簡単に実現できます。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート