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

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

藏色散人
藏色散人転載
2021-05-26 16:10:442140ブラウズ

次のチュートリアルコラムでは、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 までご連絡ください。