本日はLaravel5のミドルウェアに関して軽く調べました。
Middleware
HTTPミドルウェアとも呼ばれるようです。(名前空間がApp\Http\Middlewareなので
基本的な所としては、L4でfilterと呼ばれていた機能に近いようですね。
リクエスト時とかレスポンス前等にフィルタリングを入れれるのがミドルウェアのようです。
Middlewareはルーティングにも、コントローラーにも書けるみたいですね。
ルーティングに書くならこんな感じ
// authミドルウェアを適用させている
Route::get('admin/profile', ['middleware' => 'auth', function() {
}]);
コントローラーで直接Middlewareを読み込む書き方はこんな感じ。
public function __construct()
{
// コントローラー全体に適用する
$this->middleware('auth');
// fooActionとbarActionにだけ適用する
$this->middleware('log', ['only' => ['fooAction', 'barAction']]);
// fooActionとbarAction以外に適用する
$this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]);
}
なお、ここで注意点として、Middlewareを新規で作った場合はapp/Http/Kernel.php
の$routeMiddlewareにエイリアスを登録する必要があるみたい。
アプリケーション全体に適用する場合は、app/Http/Kernel.php
の$middleware
プロパティに追加するといいみたい。
フィルターの時と比べて、クラス化されたので記述コード量は増えちゃいましたが、色々利用価値はありそうです。
詳しい話は日本語ドキュメントを参考にすると良いと思います。
HTTPミドルウェア 5.0.dev Laravel
コメント