名前が示すように、ミドルウェアとは、リクエスト データの傍受と処理、データ検証、およびリクエストとレスポンスの間に次のミドルウェアへのエントリを許可するかどうかを決定する論理処理を指します。
ミドルウェアはプレフィックスミドルウェアとポストミドルウェアに分かれており、権限認証やログ記録などに利用できます。 # 初心者からマスターまでの PHP プログラミング)ミドルウェアは、アプリケーションに入る HTTP リクエストをフィルタリングする便利なメカニズムを提供します。たとえば、
Laravel にはユーザー認証を検証するための組み込みミドルウェアがあります。ユーザーが ID 認証に合格しない場合、ミドルウェアはユーザーをログイン インターフェイスにリダイレクトします。ただし、ユーザーが認証されている場合、ミドルウェアはアプリケーションへのリクエストをさらに許可します。
Laravel は、すべてのルーティング アプリケーションに VerifyCsrfToken ミドルウェアを自動的に提供します。HTTP リクエストがアプリケーションに入り、VerifyCsrfToken ミドルウェアを通過すると、クロスサイト リクエスト フォージェリを防ぐためにトークンが検証されます。 HTTP 応答がアプリケーションを離れる前に追加される必要があります。適切な Cookie。 (laravel 5.5 以降、CSRF ミドルウェアは Web ルーティングにのみ自動的に適用されます)もちろん、ID 認証に加えて、さまざまなタスクを実行する他のミドルウェアを作成することもできます。たとえば、CORS ミドルウェアは、アプリケーションから送信されるすべての応答に適切なヘッダー情報を追加する役割を担うことができ、ロギング ミドルウェアは、アプリケーションに受信されるすべてのリクエストを記録できます。
なぜミドルウェアが必要なのでしょうか?1. ミドルウェアが不要なシナリオ
比較的小規模なアウトソーシング プロジェクトを開発する場合、最初に考慮するのは、プロジェクトを迅速に完了して納品する方法です。将来のアップグレードや拡張を考慮するのではなく、ビジネスロジックがそれほど複雑ではない場合、すべてのビジネスコードを1つのコントローラー(コントローラー)で完了できるため問題ありませんが、ビジネスロジックを作成すると、より複雑になりますプロジェクトについてはどうですか?
2. ミドルウェアが必要なシナリオビジネス ロジックがより複雑な場合、すべてのビジネス コードをコントローラーに記述するのは適切ではありません。サーバーは非常に肥大化して維持が困難になるため、この時点で構造を階層化し (サービス補助コントローラー、アクション、リポジトリ補助モデル、これについては別の記事で説明します)、Cookie の操作/ユーザー権限の検証などを記述する必要があります。オペレーションをそれぞれのミドルウェアに組み込むことで、作成したプロジェクトの保守性が大幅に向上します。
ミドルウェアの実行順序?1. ミドルウェアにはなぜ実行順序があるのですか?
仮定のシナリオ: ユーザーがコメントを削除しました。ユーザーがログインしているかどうかを確認する必要があります。 . コメントが正常に削除された後、このビジネスの操作ログを記録する必要があります。
実行プロセス(コアプロセスのみ考慮): エントリ(index.php) > ログイン認証(ミドルウェア1) > 記録データ(ミドルウェア2) > 業務処理(コントローラ) > 記録操作ログ(ミドルウェア3) > 応答を返します。
上記の 2 つのミドルウェアではなく 3 つのミドルウェアがあるのはなぜですか?答えは、一般的な操作ログの記録はミドルウェアだけでは完結できないからです(ミドルウェアの実装方法を考えてみてください) 各操作に対応するミドルウェアを個別に見てみましょう。
ユーザーがログインしているかどうかを確認します: ミドルウェア 1; 業務操作ログを記録します: ミドルウェア 2 ミドルウェア 3; これら 3 つのミドルウェアが実行順序を区別しない場合、要件は実現できないため、ミドルウェアファイルは順番に実行されます。
2. プレミドルウェアとポストミドルウェアここでは、プレミドルウェアとポストミドルウェアとは何かについて説明します。
プレミドルウェア: アプリケーションが業務リクエスト (コントローラー) を処理する前に実行されるミドルウェア (上記の例のミドルウェア 1 とミドルウェア 2 など)。
ポストミドルウェア:アプリケーションが業務リクエスト(コントローラー)を処理した後に実行されるミドルウェアで、ミドルウェア3に相当します。
以上がPHP Webサイトを公開するにはどのようなミドルウェアが使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。