Laravel ミドルウェアを理解する: Laravel の新しいアプローチの詳細
Laravelのミドルウェア入門
ミドルウェアは現代の Web 開発において不可欠な概念であり、人気のある PHP フレームワークである Laravel は HTTP リクエストを処理するためにミドルウェアを広範囲に使用しています。単純な API を構築する場合でも、大規模な Web アプリケーションを構築する場合でも、Laravel のミドルウェアを理解することは、よりクリーンで、より管理しやすく、効率的なコードを作成するための鍵となります。
この記事では、Laravel ミドルウェアについて詳しく説明し、Laravel ミドルウェアとは何か、それを使用する理由、効果的な使用方法について説明します。また、HTTP カーネルの削除など、大幅な変更が加えられた Laravel 11 のミドルウェアの構造についても見ていきます。最後に、Laravel でのカスタム ミドルウェアの作成と使用について説明します。
目次
- ミドルウェアとは何ですか?
- ミドルウェアを使用する理由
- Laravel のミドルウェアの種類
- ミドルウェアの利点
- Laravel 11 のミドルウェア構造
- カスタムミドルウェアを作成して使用する方法
- ミドルウェアの使用例
- Laravel のミドルウェアのベストプラクティス
- 結論
1.ミドルウェアとは何ですか?
ミドルウェアは本質的に、受信 HTTP リクエストとアプリケーションの間に存在するフィルターまたはレイヤーです。受信リクエストをインターセプトし、リクエストを次の層に渡す前に、認証、ロギング、リクエストの変更などのさまざまなタスクを実行できます。処理後、ミドルウェアはリクエストがアプリケーションに進むことを許可したり、レスポンスを変更したり、リクエストを完全に拒否したりできます。
簡単に言うと、ミドルウェアはアプリケーションのセキュリティ ゲートまたはガードのようなものです。アプリケーションへのすべてのリクエストはミドルウェアを通過する必要があり、リクエストのタイプに基づいてさまざまな動作を定義できます。
2. ミドルウェアを使用する理由
ミドルウェアは、アプリケーションに入る HTTP リクエストをフィルタリングまたは変更するための便利なメカニズムを提供します。 Laravel アプリケーションでミドルウェアが使用される一般的な理由をいくつか示します:
認証と認可: ミドルウェアは、認証されたユーザーまたは特定の権限を持つユーザーのみが特定のルートにアクセスすることを保証できます。
メンテナンス モード: ミドルウェアは、アプリケーションがメンテナンス モードであるかどうかを確認し、すべての受信リクエストに対してメンテナンス メッセージを返すことができます。
ログと監視: ミドルウェアはすべてのリクエストをログに記録したり、パフォーマンスを監視したりできるため、開発者がアプリケーションのパフォーマンスを追跡できるようになります。
CORS (Cross-Origin Resource Sharing): ミドルウェアは CORS ヘッダーを処理して、外部オリジンからのリクエストを許可または拒否できます。
リクエストの変更: 入力文字列のトリミングや入力のサニタイズなど、リクエスト データがコントローラーに到達する前に変更することが必要な場合があります。
ミドルウェアを使用すると、アプリケーション ロジックをクリーンな状態に保ち、セキュリティ、ロギング、リクエストの変更などの横断的な問題から切り離すことができます。
3. Laravelのミドルウェアの種類
Laravel では、ミドルウェアは一般に次の 3 つのタイプに分類できます。
グローバルミドルウェア
グローバル ミドルウェアは、アプリケーションに受信されるすべての HTTP リクエストに適用されます。一度定義すると、すべてのルートに自動的に適用されます。たとえば、アプリケーションに対して行われたすべてのリクエストのログ記録を有効にすることができます。
ルート固有ミドルウェア
このタイプのミドルウェアは、特定のルートまたはルートのグループにのみ適用されます。これを個々のルート、または同様の動作を共有するルートのグループにアタッチできます。たとえば、ログイン ユーザーを必要とするルートにのみ認証ミドルウェアを適用できます。
ミドルウェア グループ
ミドルウェア グループを使用すると、グループとして一緒に適用できる複数のミドルウェアを定義できます。 Laravel には、Web グループや API グループなど、いくつかのデフォルトのミドルウェア グループが付属しています。これらのグループは、すべての Web リクエストまたは API リクエストにそれぞれ適用されるミドルウェアをバンドルします。
4. ミドルウェアのメリット
ミドルウェアは、Laravel 開発者にいくつかの利点を提供します。
1.関心事の分離
ミドルウェアは、メインのアプリケーション フローから特定のロジックを分離することで、懸念事項を分離するのに役立ちます。これにより、アプリケーションの役割が個別のレイヤーに分割されるため、アプリケーションの保守と拡張が容易になります。
2.再利用性
ミドルウェアを定義すると、複数のルートおよびアプリケーションにわたって再利用できます。これにより、ミドルウェア ロジックを 1 回だけ作成し、必要なときに適用できるようになります。
3.セキュリティ
ミドルウェアを使用すると、アプリケーションのエントリ ポイントに認証や認可などのセキュリティ関連のロジックを実装でき、不正なリクエストがコア ロジックに到達しないようにできます。
4.カスタマイズ
Laravel ミドルウェアは柔軟でカスタマイズ可能です。リクエストを変更したり、特定の条件に基づいてユーザーをリダイレクトしたり、クライアントに返される前にレスポンスを操作したりするミドルウェアを作成できます。
5.一元的なエラー処理
ミドルウェアを使用すると、エラーと例外を集中管理できます。例外や検証エラーをキャッチし、アプリケーション全体で均一に処理できます。
5. Laravel 11のミドルウェア構造
Laravel 11 では、特にミドルウェアの処理方法において重要な構造上の変更がいくつかありました。 Laravel 11 より前は、すべてのミドルウェア設定は Http カーネル ファイル (app/Http/Kernel.php) で処理されていました。ただし、Laravel 11 では、よりクリーンでよりモジュール化されたアプローチが導入されています。
HTTP カーネルの削除
Laravel 11 では、HTTP カーネルが削除され、ミドルウェアが bootstrap/app.php ファイルで設定されるようになりました。これは、従来の Http カーネル構造に慣れている開発者にとっては大きなパラダイム シフトのように感じるかもしれませんが、ミドルウェアの登録と管理をより効率的で柔軟な方法で行うことができます。
Laravel 11 のデフォルトの bootstrap/app.php ファイルは次のようになります:
<?php return Application::configure() ->withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); ?>``` **Middleware Management** In Laravel 11, middleware is now handled through the withMiddleware() method, which accepts a callable function. Inside this callable, you can register, modify, or remove middleware. ## 6. How to Create and Use Custom Middleware in Laravel Creating custom middleware in Laravel allows you to extend the default behavior of your application. Here’s how to create and use custom middleware in Laravel: Step 1: Create the Middleware You can create middleware using the Artisan command: php artisan make:middleware CheckAge This command will create a new middleware class in the app/Http/Middleware directory. The newly created CheckAge.php file will look something like this: ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. */ public function handle(Request $request, Closure $next) { if ($request->age <= 18) { return redirect('home'); } return $next($request); } }?>``` In this example, the CheckAge middleware checks the user's age and redirects them if they are under 18. If the user passes the condition, the request continues to the next layer. **Step 2: Register the Middleware** Since Laravel 11 no longer uses the Http Kernel, you will need to register your middleware in the bootstrap/app.php file. Here’s how you can register your custom middleware: ```php return Application::configure() ->withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', ) ->withMiddleware(function (Middleware $middleware) { $middleware->alias('check.age', \App\Http\Middleware\CheckAge::class); }) ->create();``` Now, your middleware alias check.age is available for use in your routes. Step 3: Apply the Middleware to Routes Once the middleware is registered, you can apply it to routes or route groups: ```php <?php Route::get('/dashboard', function () { // Only accessible if age > 18 })->middleware('check.age');?>``` ## 7. Practical Examples of Using Middleware Middleware can be used for a variety of tasks in Laravel. Let’s look at a few practical use cases. **Example 1: Logging Requests** You can create middleware to log incoming requests to a file or a logging service. This can help you monitor the behavior of your application. ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request; class LogRequest { public function handle(Request $request, Closure $next) { Log::info('Request URL: ' . $request->url()); return $next($request); } }?>``` **Example 2: Checking User Roles** You can use middleware to restrict access based on user roles. For example, only allow access to certain routes if the user has an admin role. ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class CheckRole { public function handle($request, Closure $next) { if (Auth::user() && Auth::user()->role != 'admin') { return redirect('/home'); } return $next($request); } }?>``` ## 8. Best Practices for Middleware in Laravel Here are some best practices to follow when working with middleware in Laravel: **1. Keep Middleware Focused** Middleware should be responsible for a single task. If you find that your middleware is doing too much, consider splitting it into smaller, more focused middleware. **2. Use Route-Specific Middleware** Use route-specific middleware when possible. Applying middleware globally can lead to performance overhead and unnecessary checks on routes that don’t need them. **3. Avoid Complex Logic** Middleware should be kept simple. Complex logic or business rules should be handled in the controller
以上がLaravel ミドルウェアを理解する: Laravel の新しいアプローチの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。
