💨
Laravel ミドルウェアの整理
はじめに
開発を行う中でよく出るミドルウェア。
何か処理してるんだろなー、くらいで、何をしているか結局わからない状態だったので、整理の為にこちらに記載します。
ミドルウェアとは
クライアントからリクエストを受けとり、コントローラー処理が行われる前後に処理を追加する仕組み。
複数あるコントローラーに、共通のミドルウェア処理を付与することができる。
共通の処理を記述する箇所 app/Http/Middleware
反映させる為に、ルートファイルに記述 web.php
例
app/Http/Middleware/Test.php
namespace App\Http\Middleware;
class Test
{
public function test(){
echo "これはテストです";
}
}
web.php
Route::get('user', 'UserController@index' )->middleware(Test::class);
グローバルミドルウェア
全てのコントローラーでミドルウェアを使用したい場合、
ルートファイルにミドルウェアの記述せずに、Httpフォルダ内にあるKernel.phpにミドルウェアの記述をする。
Kernel.php
protected $middleware = [
\App\Http\Middleware\Test::class,
];
グループミドルウェア
複数のミドルウェアをまとめて反映させることができる。
Kernel.php
protected $middlewareGrouops = [
'test' => [
\App\Http\Middleware\Test::class,
\App\Http\Middleware\Practice::class,
],
];
web.php
Route::get('test', 'TestCOntroller@index')->middleware('test');
上記の記述により、ミドルウェアTest、Practiceが反映される。
ルートミドルウェア
ミドルウェアのプレフィックス(エイリアスネームのようなもの)を付与。記述が楽になる。
Kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
]
web.php(グループミドルウェアと同じ記述)
Route::get('test', 'TestCOntroller@index')->middleware('auth');
さいごに
認証系の処理をミドルウェアとして処理をすることが多い模様。
ex) ログインしていなければ、どのページをみてもログインページに飛ぶ。
Discussion