ホームページ > PHPフレームワーク > Laravel > Laravelの3つのミドルウェアの機能

Laravelの3つのミドルウェアの機能

藏色散人
リリース: 2021-05-26 16:10:44
転載
2143 人が閲覧しました

次のチュートリアルコラムでは、Laravel の 3 つのミドルウェアの機能を紹介します。 以前は、ミドルウェアはミドルウェアにミドルウェアを追加するだけだと単純に考えていました。 $middleware $middlewareGroup $routeMiddleware 情報を調べた結果、これら 3 種類の機能と違いがようやく理解できました。

最初のタイプ、

グローバル ミドルウェア/$middleware:リクエストを行うたびに、ここに「Every」が表示されます。ミドルウェアが実行されます。

2 番目のタイプ、

routing middleware/$routeMiddleware:この属性で定義されたミドルウェアは、ルートを定義するときに参照されます。 これが私たちが定義したルーティング ミドルウェアであると仮定します:

protected $routeMiddleware = [
 ...
 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
];
ログイン後にコピー

\Illuminate\Auth\Middleware\Authenticate::class を使用したい場合、このミドルウェアは次のように記述する必要があります:

Route::get('hello/laravel-china','XXController@index')->middleware('auth');
ログイン後にコピー

ルート定義時にミドルウェアのメソッドを呼び出し、パラメータの値をauthにすることで、このルートにアクセスするとミドルウェアが実行されます。



3 番目のタイプ、

Middleware Groups/$middlewareGroups:上記のルーティング ミドルウェアを見てください。このようにルーティングミドルウェアを追加するのは非常に面倒に感じますが、100個のミドルウェアを実行したい場合は、ルート定義時に100個を追加する必要があります。でも、ミドルウェア群を使えばそんな面倒なことは必要ありません!ミドルウェアグループがどのように定義されているかを見てみましょう。

protected $middlewareGroups = [
 'web' => [
 \App\Http\Middleware\EncryptCookies::class,
 ...
 ],
 'api' => [
 ...
 ],
];
ログイン後にコピー
上記の例はミドルウェア群の形式を定義するもので、例えばwebのキー値は複数のミドルウェアから構成される配列に対応します。

ルートを宣言する必要がある場合は、次のように呼び出します。

Route::group(['middleware' => 'web'],function($route){
 $route->get('hello/world',function(){});
 $route->get('hello/php',function(){});
 // 这样在访问这个这些路由的时候,就会执行中间件组 web 所对应的中间件!
});
ログイン後にコピー

**概要:

$ミドルウェア/グローバル ミドルウェアは、すべてのリクエストに対して何らかの処理を行う必要がある場合に定義するのが適しています。これは敷地内にあります。 (例: リクエスト数をカウントする)
$middlewareGroups/Middleware Groups、たとえば、プロジェクトに API リクエストと Web リクエストがある場合、2 種類のリクエスト ミドルウェアを分離する必要があります。ミドルウェア グループが必要です。

$routeMiddleware/ルーティングミドルウェア、一部の個別のリクエストに対して、特別なミドルウェアを実行する必要がある場合、この属性で定義するのが適切です。 **

関連する推奨事項:

最新の 5 つの Laravel ビデオ チュートリアル

以上がLaravelの3つのミドルウェアの機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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